2
我知道python 2to3更改所有xrange
到range
,我沒有看到任何問題。我的問題是關於它如何將range(...)
更改爲list(range(...))
:它是否是愚蠢的,只是盲目地搜索並全部替換它們,還是足夠聰明地告知何時不需要列表,並將其保留爲range
會更好?2to3範圍(...) - >列表(範圍(...))
我知道python 2to3更改所有xrange
到range
,我沒有看到任何問題。我的問題是關於它如何將range(...)
更改爲list(range(...))
:它是否是愚蠢的,只是盲目地搜索並全部替換它們,還是足夠聰明地告知何時不需要列表,並將其保留爲range
會更好?2to3範圍(...) - >列表(範圍(...))
我不知道它真的有多聰明,但它肯定不會增加list()
到每range()
。
例如,以下內容:
print(range(10))
被改變爲:
print(list(range(10)))
然而,以下:
for el in range(10):
print(el)
被保持不變。
這清楚地表明它比盲目的搜索和替換更復雜。
我注意到,如果我將名稱範圍重新綁定到其他名稱,然後在腳本中稍後使用它,它仍然會使用它。所以它不能很聰明.. – wim 2013-03-13 11:51:14
@wim:在一個真正的程序中,有多麼複雜的程序員會這樣做...... – 2013-03-13 12:21:01
它也打破了我的doctests,因爲它忽略了那些xranges:P – wim 2013-03-13 12:25:28