Python 函数是否存储为对象? [关闭]

2024-04-11

此查询继续link https://stackoverflow.com/questions/22604974/python-memory-model-for-this-program进一步了解这一点:

对于函数,您有一个具有某些字段的对象, 其中包含 e。 G。以字节码表示的代码,数量 其具有的参数等

我的问题:

1)我如何可视化一个被表示为对象的函数?(NPE在这里回答了这个问题)

2)如何可视化表示为对象的高阶函数?

3)如何将模块可视化为对象?说“导入运营商”

4) '+' '>' '!=' '==' '=' 等运算符是否也映射到某些对象方法?对于 expr 'check = 2


这一切都说明,在 Python 中,函数和其他对象一样都是对象。

例如:

In [5]: def f(): pass

Now f是一个类型的对象function:

In [6]: type(f)
Out[6]: function

如果你仔细检查它,它包含一大堆字段:

In [7]: dir(f)
Out[7]: 
['__call__',
 ...
 'func_closure',
 'func_code',
 'func_defaults',
 'func_dict',
 'func_doc',
 'func_globals',
 'func_name']

举一个例子,f.func_name是函数的名称:

In [8]: f.func_name
Out[8]: 'f'

and f.func_code包含代码:

In [9]: f.func_code
Out[9]: <code object f at 0x11b5ad0, file "<ipython-input-5-87d1450e1c01>", line 1>

如果你真的很好奇,你可以进一步深入:

In [10]: dir(f.func_code)
Out[10]: 
['__class__',
 ...
 'co_argcount',
 'co_cellvars',
 'co_code',
 'co_consts',
 'co_filename',
 'co_firstlineno',
 'co_flags',
 'co_freevars',
 'co_lnotab',
 'co_name',
 'co_names',
 'co_nlocals',
 'co_stacksize',
 'co_varnames']

等等。

(以上输出是使用 Python 2.7.3 生成的。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 函数是否存储为对象? [关闭] 的相关文章

随机推荐