在我在这里发布这个问题之前,我已经搜索过 SO,希望 这不是重复的。
def print_me():
a_list = range(1, 10)
for idx, aa in enumerate(a_list):
pass
print(idx)
if __name__ == '__main__' : print_me()
输出如下:
8
我来自 C++ 世界,无法弄清楚为什么 idx
仍然在范围内
代码在 for 循环之外?
谢谢
最佳答案
for
循环不创建任何作用域。这就是原因。
在此特定代码中,idx
是 print_me
函数的局部变量。
来自 the docs :
以下是 block :
- 一个模块
- 一个函数体
- 类定义
更新
生成器表达式也有自己的作用域。
As of Python 3.0列表理解也有自己的范围。
关于python - for循环中变量的访问范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715297/