python - 函数工厂中变量的范围

标签 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()就会超出范围终止,有效地留下未定义的东西。

这里打印的只是 volatile 内存内容吗?这是怎么回事?

最佳答案

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

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

关于python - 函数工厂中变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009531/

相关文章:

python - 从 .h5 文件写入 excel : performance

python - Python选择ROI OpenCV

面向 Swift 协议(protocol)的混合作用域

javascript - 如何在 jQuery 中正确地限定变量的范围?

angularjs - 如何使用 $location 在工厂中获取当前 url 的协议(protocol)主机和端口

javascript - 构建内容不同的函数的工厂?

c++ - 这段代码的目的是什么?

Python:是否有数学占位符NoneType

python - 如何将一串字节转换为int?

javascript - 为什么 '(function a() {})'不把 'a'放到全局对象中呢?