1

可能重复:
是否可以在没有迭代器变量的情况下实现 Python for range 循环?

只是想多次做某事所以我写

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

所以当我运行 PyLint 时,它会说:“未使用的变量 'i'”当然。那么在我只想循环多次的地方编写这种类型的循环的正确方法是什么。

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

这是唯一的方法吗?

4

3 回答 3

4

虽然您可以用 替换i_但首先编写循环是非常好的,并且以任何其他方式编写它可能会被大多数 Python 程序员认为是陌生的。

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

于 2012-11-11T12:08:35.160 回答
2

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

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

于 2012-11-11T12:07:41.697 回答
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
    
  • 可能将 an 附加_到未使用的变量。我不确定这个命名约定是否得到尊重,但官方用户手册中提到了:

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

于 2012-11-11T12:26:27.540 回答