在编写了这段代码以分别对数据库执行查询之后, PyCharm 突出显示了带有给定注释的第二个 i 。
for i in range(records):
filler.apply_proc('AddCompany', gen_add_company())
for i in range(records):
filler.apply_proc('AddConference', gen_add_conference())
重新宣布'我'上面定义的没有用法。
是否会出现任何错误?我应该以其他方式实现吗?
答案 0 :(得分:1)
与C ++ / Java相比,不同的范围会发生什么。你希望i
之间不存在for
。 It's not the case.
你可以看到在工作中,假设记录== 10:
for i in range(records):
filler.apply_proc('AddCompany', gen_add_company())
print("i: %d" % i)
for i in range(records):
filler.apply_proc('AddConference', gen_add_conference())
假设没有来自for
的输出:
i: 9
你收到警告的原因可能就是这种事情可能会导致大脑崩溃。间接解决方案包含在链接页面中;你可以考虑的是将for
包含在一个函数中,如果这种情况发生两次以上,这对于可读性可能特别有用。
在list comprehensions中也存在类似的范围惊喜案例,但在你问的Python 3中却没有。