擅长:python、mysql、java
<p>当您对一个变量执行<code>for</code>循环时,它隐式调用您实际传递的iterable的<code>__iter__</code>方法。<br/>
{你总是在使用循环列表。。。所有的一切。在</p>
<p>我想这个字节码的摘录可以让你相信:</p>
<pre><code>>>> def a():
... for x in [1,2,3]:
... print x
...
>>> import dis
>>> dis.dis(a)
2 0 SETUP_LOOP 28 (to 31)
3 LOAD_CONST 1 (1)
6 LOAD_CONST 2 (2)
9 LOAD_CONST 3 (3)
12 BUILD_LIST 3
15 GET_ITER # <--- get iter is important here
>> 16 FOR_ITER 11 (to 30)
19 STORE_FAST 0 (x)
3 22 LOAD_FAST 0 (x)
25 PRINT_ITEM
26 PRINT_NEWLINE
27 JUMP_ABSOLUTE 16
>> 30 POP_BLOCK
>> 31 LOAD_CONST 0 (None)
34 RETURN_VALUE
</code></pre>
<p/><hr/>
但是,iterables还允许您在Python中执行其他一些操作,例如使用<code>next()</code>进入iterable,或者引发一个{a1}。如果您要处理不同的对象类型,并且希望应用泛型算法,那么它非常有用。