我想知道以下 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 内存内容吗?这是怎么回事?
最佳答案
这是由于闭包或“附加数据的函数”而起作用的,并且在这里得到了很好的解释
关于python - 函数工厂中变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009531/