访问for循环中的变量范围

时间:2011-10-10 15:41:38

标签: python

在我发布这个问题之前,我已经搜索了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循环的一面吗?

谢谢

1 个答案:

答案 0 :(得分:10)

for循环不会创建任何范围。这就是原因。

在此特定代码中,idxprint_me函数的局部变量。

来自the docs

以下是块:

  • 模块
  • 功能正文
  • 类定义

<强>更新

生成器表达式也有自己的范围。

As of Python 3.0列表推导也有自己的范围。