2013-03-13 111 views
2

我知道python 2to3更改所有xrangerange,我没有看到任何问题。我的问题是关于它如何将range(...)更改为list(range(...)):它是否是愚蠢的,只是盲目地搜索并全部替换它们,还是足够聪明地告知何时不需要列表,并将其保留为range会更好?2to3范围(...) - >列表(范围(...))

回答

3

我不知道它真的有多聪明,但它肯定不会增加list()range()

例如,以下内容:

print(range(10)) 

被改变为:

print(list(range(10))) 

然而,以下:

for el in range(10): 
    print(el) 

被保持不变。

这清楚地表明它比盲目的搜索和替换更复杂。

+0

我注意到,如果我将名称范围重新绑定到其他名称,然后在脚本中稍后使用它,它仍然会使用它。所以它不能很聪明.. – wim 2013-03-13 11:51:14

+0

@wim:在一个真正的程序中,有多么复杂的程序员会这样做...... – 2013-03-13 12:21:01

+0

它也打破了我的doctests,因为它忽略了那些xranges:P – wim 2013-03-13 12:25:28