当你不需要在python中使用索引时,如何制作For循环?

Jac*_*xel 7 python coding-style pylint dummy-data

如果我需要python中的for循环

for i in range(1,42):
    print "spam"
Run Code Online (Sandbox Code Playgroud)

但不要使用"i"表示任何pylint抱怨未使用的变量.我该怎么处理?我知道你可以这样做:

for dummy_index in range(1,42):
    print "spam"
Run Code Online (Sandbox Code Playgroud)

但这样做对我来说似乎很奇怪,有更好的方法吗?

我是python的新手,请原谅我,如果我错过了一些明显的东西.

jam*_*lak 11

for _ in range(1,42):
    print "spam"
Run Code Online (Sandbox Code Playgroud)

  • +1:使用默认设置,PyLint不会抱怨以"dummy"或"_"开头的未使用变量.使用"\ _"来存储不需要的值在Python中是常见的(例如`foo,_ = func_returning_tuple()`话虽如此,我更喜欢`_i`而不是普通的`_`. (6认同)
  • 注意:当使用[`gettext`](http://docs.python.org/library/gettext.html)库(或者认为将来可能会使用它)时使用`_`会导致问题.Gettext使用`_`作为i18n翻译函数(`_("翻译此文本")`),但在上面的循环之后`_`会突然变为41而下一次调用会引发异常. (6认同)
  • @Jacxel:没有"自然"的方法来循环*n*次而没有Python中的计数器变量,你不应该求助于丑陋的黑客攻击.要么忽略PyLint警告,要么将其配置为忽略名为`i`的未使用变量,要么使用前缀,可能是默认的`_`(比'dummy'更少分散注意力). (4认同)

Fer*_*yer 7

没有"自然"方法在Python中没有计数器变量循环n次,你不应该只是为了使代码分析器静音而使用丑陋的黑客.

在你的情况下,我会建议以下之一:

  • 只需忽略PyLint警告(或过滤报告的单字符变量警告)
  • 配置PyLint以忽略名为的变量i,这些变量通常仅在for循环中使用.
  • 使用前缀标记未使用的变量,可能使用默认值_(它不会分散注意力dummy)


NPE*_*NPE 6

根据pylint文件:

--dummy-variables-rgx=
          A regular expression matching names used for dummy variables (i.e.
          not used). [current: _|dummy]

换句话说,如果变量的名称以下划线或字母开头dummy,则pylint不会抱怨变量未被使用:

for dummy in range(1, 42):
    print "spam"
Run Code Online (Sandbox Code Playgroud)