嵌套函数中的python变量范围
我正在阅读这个关于装饰的
article.
在步骤8,有一个定义为: def outer(): x = 1 def inner(): print x # 1 return inner 如果我们运行它: >>> foo = outer() >>> foo.func_closure # doctest: +ELLIPSIS 它不打印x.根据解释:
但是,我真的不明白第二段是什么意思. 我理解inner()确实得到x的值,但为什么它不打印x? 谢谢 更新: 谢谢大家的答案.现在我明白了原因. 解决方法
你不是在呼唤内心.你已经调用了outer,它返回内部,但没有调用它.如果你想调用inner,请执行foo()(因为你将outer()的结果赋予名称foo).
您引用的段落与此问题相关.你说你已经明白为什么内在得到x的值,这就是那个段落所解释的.基本上,如果在嵌套函数中使用局部变量,并且返回嵌套函数,则变量的值与返回的函数一起存储,即使该变量的定义范围不再处于活动状态.通常x在外部完成后会消失,因为x只是外部的局部.但外部返回内部,仍然需要访问x.所以x被包含在所谓的闭包中,所以稍后它仍然可以被内部访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |