可能重复:
How can I get around declaring an unused variable in a for loop?
在Python中,命名一个不会被使用的变量的最佳实践是什么?这是一个奇怪的问题,但对于我的具体情况,我有一个(键,值)元组,我只对值感兴趣。我的用例的基本演示:
some_stuff = [("key", "value"), ("key2", "value")]
for _, value in some_stuff:
pass # TODO: do something really important with value
我在Eclipse中注意到,命名变量_或_前缀(例如_k)将不会显示未使用的变量警告,并且删除_前缀会导致警告被引发,但这可能只是一个奇怪的/ Eclipse中的“功能”而非Python最佳实践..
答案 0 :(得分:23)
不确定这是否是Eclipse的东西,但我通常使用'_'
来表示我不关心的值(即,返回元组中的值或for
中的索引值 - 循环)。
当然,您可以随时使用旧的待机状态,例如命名变量dummy
或ignore
。
我不确定PEP 8是否提及此事,可能值得窥视。
答案 1 :(得分:12)
这是一个Python编码约定,是的。最佳做法是使用_
,而不关心所设置的值,例如unpacking values from a tuple时。然而,有时需要这个标志,你可能会以非Pythonic方式做其他事情。
_
用于表示“私人”方法和变量,如Phil Cooper所说。用此表示这些方法不属于任何其他模块可以或应该依赖的公共合同。
一些参考文献:
答案 2 :(得分:3)
让我们从...开始......
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
...
Readability counts.
Special cases aren't special enough to break the rules.
我建议选择不值得怀疑的方法。它通常意味着可以自我解释,简单易懂的东西。如果您坚持表达未使用,那么名称unused
或dummy
呢?
如果可能,_
更多隐身,隐藏甚至是被忽视的候选人?
对于Perl用户,_
表示除 unused 之外的其他内容。即使你可能不关心Perl用户,如果你以前从未见过它,_
对你意味着什么呢?
答案 3 :(得分:0)
你几乎得到了_1
:
注意:使用__
不仅仅是命名约定,因为它会导致name mangling。这会将变量重命名为_ClassName__var
。这使得变量/方法更难在类之外使用。这主要是为了避免继承类在父类中意外覆盖方法。