Nik*_*iou -1 python range python-2.x lazy-evaluation python-3.x
我正在查看该range功能,在线搜索显示(编辑:在2.x),它是热切评估
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
但是当我在我的本地Python3.3解释器中尝试下面的代码时
a = range(10)
print(a)
Run Code Online (Sandbox Code Playgroud)
我得到一个输出
range(0, 10)
Run Code Online (Sandbox Code Playgroud)
这是我对懒惰评估函数的期望,是什么情况?
注意:在Python2.7中,它始终表现为热切评估.
Python 2和3之间的行为发生了变化.在Python 2中,它创建了一个列表,因此它得到了有效的评估.在Python 3中,它创建了一个范围对象,其各个值被懒惰地评估.
在Python 2中,xrange提供了一个懒惰版本range.在Python 3中,如果要强制将整个惰性对象评估为真实列表,则可以执行此操作list(range(10)).
| 归档时间: |
|
| 查看次数: |
2323 次 |
| 最近记录: |