我有一个可以简化为此代码示例的函数:
def test_fun():
for i in range(17):
item = i
print(item)
for i in range(42):
items = [[i], [i], [i]]
flatten_items = [item[0] for item in items]
print(flatten_items)
当我运行 pyflakes (1.3.0) 或 flake8 (3.2.0) 时,我得到以下报告:
/tmp/test.py:7:38: F812 list comprehension redefines 'item' from line 3
我看到的是该item
变量确实被使用了两次,但是在不同的范围内,所以不应该报告,对吧?
此外,即使没有第二个循环,为什么不应该允许我重写item
变量,因为我已经完成了我在第 3 行定义的变量的工作,因为print
?
那么,这是误报,还是我真的在写一段很糟糕的代码?