python - 我们可以使用外部函数在python的外部函数范围之外访问内部函数吗?

标签 python function scope

只是出于好奇,我想知道这个..
我知道内部函数的范围仅限于外部函数体,但仍然有什么办法可以让我们可以在其范围之外访问内部函数变量或在其范围之外调用内部函数?

In [7]: def main():
   ...:     def sub():
   ...:         a=5
   ...:         print a
   ...:         

In [8]: main()

In [9]: main.sub()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/home/dubizzle/webapps/django/dubizzle/<ipython-input-9-3920726955bd> in <module>()
----> 1 main.sub()

AttributeError: 'function' object has no attribute 'sub'

In [10]: 

最佳答案

>>> def main():
...     def sub():
...         a=5
...         print a
... 
>>> main.__code__.co_consts
(None, <code object sub at 0x2111ad0, file "<stdin>", line 2>)
>>> exec main.__code__.co_consts[1]
5

关于python - 我们可以使用外部函数在python的外部函数范围之外访问内部函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11625923/

相关文章:

python - 正则表达式将主题标签拆分为单词

css - PyQT - 更改小部件背景图像的功能只是消隐背景,而不是替换它......?

function - 除法 ("/") 在函数中

python - 如何在 wxpython 应用程序的帮助中添加超链接?

python - 使用 Python 删除或删除 CSV 文件中的最后一列

c++ - 递归函数? [初学者]

javascript - event 是一个全局变量,可以在回调链中的任何地方访问吗?

angularjs - 在 Typescript 中使用 AngularJS Controller 的范围

javascript - 立即自执行函数和 "this"

python - 如何在django中获取相关模型的所有记录并显示动态数据