在我发布这个问题之前,我已经搜索了SO,希望这不是一个重复的问题.
def print_me():
a_list = range(1, 10)
for idx, aa in enumerate(a_list):
pass
print(idx)
if __name__ == '__main__' : print_me()
Run Code Online (Sandbox Code Playgroud)
输出如下:
8
我是从C++世界来的,idx当代码在for循环的一边时,无法弄清楚为什么仍然在范围内?
谢谢
ovg*_*vin 10
for循环不会创建任何范围.这就是原因.
在这个特定的代码中idx是print_me函数的局部变量.
来自文档:
以下是块:
更新
Generator表达式也有自己的作用域.
从Python 3.0开始,列表推导也有自己的范围.