Question #
我们看下面的代码有什么问题?
# 错误示例
adict = {i: i * 2 for i in xrange(10000000)}
for key in adict.keys():
print("{0} = {1}".format(key, adict[key]))
Answer #
keys() 方法会在遍历前生成一个临时的列表,导致上面的代码消耗大量内存并且运行缓慢。正确的方式,是使用默认的 iterator。默认的 iterator 不会分配新内存,也就不会造成上面的性能问题:
# 正确示例
for key in adict:
这也就是为什么 Google Style 2.8 对于遍历方式的选择作出了限制。