在我发布这个问题之前,我已经搜索了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循环的一面吗?
谢谢
答案 0 :(得分:10)
for
循环不会创建任何范围。这就是原因。
在此特定代码中,idx
是print_me
函数的局部变量。
来自the docs:
以下是块:
<强>更新强>
生成器表达式也有自己的范围。
As of Python 3.0列表推导也有自己的范围。