Python就是写漂亮的代码。所以,我在运行pylint
来检查我的代码是否“漂亮”,这时我遇到了一些问题:
Unused variable 'myvar1'
从我的代码的这一部分:
for myvar1, myvar2 in mylist:
# Do stuff just using myvar2
mylist
是一个元组列表,因此我将这些元组展开为两个变量(myvar1
和myvar2
)。我定义这两个变量只是为了解开第二个变量,因为我不需要另一个。在
所以,我的问题是:有没有一种方法可以告诉解释器解包元组,但不读取第一部分(例如)。在其他一些语言中,您可以执行以下操作:
^{pr2}$或者
for *, myvar in mylist:
# Do stuff with myvar
这意味着:我不关心元组的第一部分,我只需要第二部分。
注意:我知道这可能是我要问的一个选项:
for mytuple in mylist:
# Do stuff with mytuple[1]
但这是远远不够可读的。在
你试过这两种吗?在
在Python中可以很好地工作,并且相对来说是惯用的。在
我写
for _, myvar2 in mylist
是为了强调只使用了myvar2。在当我想提醒读者(通常是我)记录结构是什么的时候,我写
for myvar1, myvar2 in mylist
。在_
名称只是一个废弃值的命名约定。CPython解释器为其分配变量,就像对任何其他变量名一样(幸运的是,*STORE_FAST*是一个非常便宜的操作)。相反,PyPy interpreter会将未使用的变量赋值标识为死代码,因此无论如何编写,都可以免费获得优化。在如果您想知道CPython如何解释代码,dis module可以提供有用的见解:
正如其他海报所提到的,来自pylint的警告有时可能是空洞的。如果您喜欢在代码中使用简短的变量名,那么就忽略pylint投诉。正如弗朗西斯·阿维拉指出的,在这种情况下,皮林不应该抱怨{}。在
除了@RaymondHettinger的回答:如果变量名以一个下划线开头,Pylint也不会抱怨未使用的变量。这意味着您可以使用:
两全其美:
这也适用于函数/方法原型,并且避免了有关未使用参数的警告,这些警告通常在从OO框架中的基类派生时得到。在
相关问题 更多 >
编程相关推荐