我正在使用pycharm
,它列出了与代码相关的所有错误/警告。虽然我理解其中大部分,但我不确定这个警告“Shadows name xyz from outer scope”的含义。有一些关于此问题的SO帖子:How bad is shadowing names defined in outer scopes?,但是它们似乎在访问全局变量。
在我的情况下,我的__main__
函数有一些变量名,然后它调用另一个函数sample_func
,该函数再次使用这些变量名(主要是循环变量名)。我假设因为我在另一个函数中,这些变量的作用域将是局部的,但是警告似乎表明情况并非如此。
你有什么想法吗?以下是一些代码供您参考:
def sample_func():
for x in range(1, 5): --> shadows name x from outer scope
print x
if __name__ == "__main__":
for x in range(1, 5):
sample_func()
__main__
的 函数,只有一些在__name__ == "__main__"
时才会执行的模块级别的代码。因此,并不存在 "主体部分" 的本地作用域;for 循环在模块级别执行(并绑定了x
)。 - Ben