<p>我写<code>for _, myvar2 in mylist</code>是为了强调只使用了<em>myvar2</em>。在</p>
<p>当我想提醒读者(通常是我)记录结构是什么的时候,我写<code>for myvar1, myvar2 in mylist</code>。在</p>
<p><code>_</code>名称只是一个废弃值的命名约定。CPython解释器为其分配变量,就像对任何其他变量名一样(幸运的是,*STORE_FAST*是一个非常便宜的操作)。相反,<a href="http://pypy.org/" rel="nofollow">PyPy interpreter</a>会将未使用的变量赋值标识为死代码,因此无论如何编写,都可以免费获得优化。在</p>
<p>如果您想知道CPython如何解释代码,<a href="http://docs.python.org/library/dis.html#module-dis" rel="nofollow">dis module</a>可以提供有用的见解:</p>
<pre><code>>>> from dis import dis
>>> def f(lot):
for _, var2 in lot:
print var2
>>> dis(f)
2 0 SETUP_LOOP 25 (to 28)
3 LOAD_FAST 0 (lot)
6 GET_ITER
>> 7 FOR_ITER 17 (to 27)
10 UNPACK_SEQUENCE 2
13 STORE_FAST 1 (_)
16 STORE_FAST 2 (var2)
3 19 LOAD_FAST 2 (var2)
22 PRINT_ITEM
23 PRINT_NEWLINE
24 JUMP_ABSOLUTE 7
>> 27 POP_BLOCK
>> 28 LOAD_CONST 0 (None)
31 RETURN_VALUE
</code></pre>
<p>正如其他海报所提到的,来自<em>pylint</em>的警告有时可能是空洞的。如果您喜欢在代码中使用简短的变量名,那么就忽略pylint投诉。正如弗朗西斯·阿维拉指出的,在这种情况下,皮林不应该抱怨{<cd3>}。在</p>