嵌套函数中的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 – 使用setuptools问题创建新的virtualenv 1.11.5失
- python – 什么是django.utils.functional .__ proxy__对象
- Python – 立即引导大量敌人
- 【python】RuntimeError: Lock objects should only be sha
- AIX上的Python:我的选择是什么?
- Python 基础 函数
- python开发_webbrowser_浏览器控制模块
- python – 如何在django的每个视图中运行一段代码?
- python – ctypes错误找不到AttributeError符号,OS X 10.7.
- python – 解压缩以ASCIIZ字符串结尾的结构