嵌套函数中的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被包含在所谓的闭包中,所以稍后它仍然可以被内部访问. (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – Scipy:加快2D复数积分的计算
- python – Django Test Client post()返回302,尽管视图的帖
- python – 在Jupyter问题中的Plotly
- 为什么python-cgi在unicode上失败?
- Python – 将非常大(6.4GB)的XML文件转换为JSON
- Python / Scipy – 将optimize.curve_fit的sigma实现到opti
- python – 在Tkinter中动态创建菜单. (lambda表达式?)
- 如何使用Python的ctypes和readinto读取包含数组的结构?
- python – Fedora上的psycopg2
- python – groupby在熊猫中的最后一个性能问题