Python循环PEP8规则

时间:2012-11-11 12:01:10

标签: python loops for-loop unused-variables

  

可能重复:
  Is it possible to implement a Python for range loop without an iterator variable?

只想多次做某事,所以我写了

    for i in range(1, 10):
        print 'something'
        print 'do not use i'

因此,当我运行PyLint时,它说:“当然,未使用的变量'我'”。 那么在我想要循环多次的情况下编写这种循环的正确方法是什么。

    i = 0
    while i < 10:
        print 'test'
        i += 1

这是唯一的方法吗?

3 个答案:

答案 0 :(得分:4)

虽然你可以用i替换_,但是首先编写循环是完全没问题的,并且以任何其他方式编写它可能会被大多数Python程序员认为是奇怪的。 / p>

PyLint检查过于激进,有时候应该忽略它。或许考虑pyflakes,如果您想要的是一个检查器,告诉您代码是否可能中断;或pep8如果你想检查你的风格(变量命名等)。

答案 1 :(得分:2)

for i in range(..)循环(虽然在python2中使用xrange())是在python中循环一系列数字的正确方法。在这种情况下,应忽略pylint警告。但是,如果是未使用的变量,通常会将其命名为_,以便更清楚地表明它未被使用。

虽然其他循环方式,但效率较低,因为它们通常涉及函数调用。除此之外,这样做不会是人们在阅读您的代码时期望看到的内容。

答案 2 :(得分:1)

我现在正在使用的PyLint版本奇怪,在这个特定的例子中似乎并没有对未使用的变量大哭。尽管如此,有几种选择:

  • 直接使用迭代器:

    i = iter(range(1, 10))
    
    try:
        while i.next():
            pass
    except StopIteration:
        pass  # safely ignore
    
  • 在文件顶部添加PyLint注释以禁用警告:

    # pylint: disable=X0123
    # NOTE: X0123 is just an example, I don't know the exact warning code
    
  • 可能会将_附加到未使用的变量。我不确定这个命名约定是否得到尊重,但在官方user manual中提到了:

      

    在我们的项目中,我们接受了我们必须在代码中进行一些修改以取悦PyLint:   坚持更多的命名约定(以下划线结尾的未使用的变量,...)