函数工厂中的变量范围

时间:2012-08-17 16:24:11

标签: python scope factory

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

# ============================
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()超出范围的代码,实际上会留下未定义的内容。

是否只是在这里打印的易失性存储器内容?发生了什么事?

1 个答案:

答案 0 :(得分:4)

这是因为闭包或“附加数据的函数”,并在此处解释

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