有人能告诉我Python的for循环是如何实现的吗?我问这个问题的原因是,当我期望相同的行为时,我在下面两个for循环中得到了不同的行为(假设cases
只是一组元素):
第一个for循环:
for case in cases:
blah
第二个for循环:
^{pr2}$
我在多线程环境中运行代码。在
基本上,我想知道Python的for循环迭代一个集合(如第一个for循环中)是否只是第二个集合的快速方法。当我们使用python for循环时,到底会发生什么?是否有任何底层优化/实现可能导致我观察到的行为差异?在
Tags:
不,第二种格式完全不同。在
for
循环对to循环覆盖序列调用iter()
,并对结果使用next()
调用。它相当于:对列表调用
^{pr2}$iter()
的结果是一个列表迭代器对象:此对象保留对原始列表的引用并跟踪其所在的索引。该索引从0开始递增,直到列表被完全迭代为止。在
不同的对象可以返回具有不同行为的不同迭代器。如果混入了线程,最终可能会用其他东西替换
cases
,但迭代器仍然会引用旧序列。在我没有发现任何不同,看看下面这个,这是你想要的吗。。在
相关问题 更多 >
编程相关推荐