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