可能重复:
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
这是唯一的方法吗?
答案 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: 坚持更多的命名约定(以下划线结尾的未使用的变量,...)