是否可以从 builtin_function_or_method 检索 func_code 对象?即从 time.time()
import time
dir(time.time)
不包含函数对象
也不
dir(time.time.__call__)
只是返回自己
time.time.__call__.__call__.__call__
..等等。
有任何想法吗?
是否可以从 builtin_function_or_method 检索 func_code 对象?即从 time.time()
import time
dir(time.time)
不包含函数对象
也不
dir(time.time.__call__)
只是返回自己
time.time.__call__.__call__.__call__
..等等。
有任何想法吗?
在 CPython 中,内置方法是用 C(或某些其他语言,例如 C++)实现的,因此无法获得 a func_code
(该属性仅存在于使用 Python 定义的函数中)。
你可以在这里找到源代码:http time.time
: //hg.python.org/cpython/file/v2.7.5/Modules/timemodule.c#l126
其他 Python 实现可能func_code
在内置函数上可用。例如,在 PyPy 上:
$ pypy
Python 2.7.1 (7773f8fc4223, Nov 18 2011, 22:15:49)
[PyPy 1.7.0 with GCC 4.0.1] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>> import time
>>>> time.time
<built-in function time>
>>>> time.time.func_code
<builtin-code object at 0x00000001017422e0>
>>>> time.time.func_code.co_consts
('time() -> floating point number\n\n Return the current time in seconds since the Epoch.\n Fractions of a second may be present if the system clock provides them.',)
很确定你不能。从文档:
内置函数
内置函数对象是 C 函数的包装器。内置函数的示例是
len()
andmath.sin()
(math
是标准内置模块)。参数的数量和类型由 C 函数确定。特殊只读属性:__doc__
是函数的文档字符串,如果不可用,则为 None;__name__
是函数的名称;__self__
设置为None
(但请参阅下一项);__module__
是定义函数的模块的名称,或者None
如果不可用。
这些是编译的 C 代码 - Python 代码中没有函数体的表示。