2

我想知道a以下 Python 代码段中变量的范围,

# ============================
def get_plotter():
    def get_a():
        return a
    a = 3.14
    return get_a
# ============================
if __name__ == '__main__':
    f = get_plotter()
    print f()
# ============================

输出是3.14,但是查看我期望a一旦get_plotter()终止就会超出范围的代码,实际上留下了未定义的东西。

它只是在这里打印的易失性内存内容吗?这是怎么回事?

4

1 回答 1

4

这是因为闭包或“附加数据的函数”而起作用的,并且在这里得到了很好的解释

https://stackoverflow.com/a/141426/735204

于 2012-08-17T16:27:37.020 回答