有人能给我解释一下为什么CPython没有像循环不变优化那样的循环优化吗?例如:
for i in range(100000000000):
passcpython不会跳过循环并花费一些时间来完成执行;while循环也会发生这种情况。
发布于 2018-03-14 19:24:30
因为python在运行循环之前不知道range是什么,因为内置代码可能会被重写。如果我这样做了
class range:
def __init__(self, n):
self.n = n
global x
x = 0
def __iter__(self):
global x
while x < self.n:
yield x
x += 1
for i in range(20): pass
print(x) # prints 20您可以看到,在动态语言中很难优化这样的东西
https://stackoverflow.com/questions/49276294
复制相似问题