Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何提取python内置函数代码_Python_Built In_Python Internals - Fatal编程技术网

如何提取python内置函数代码

如何提取python内置函数代码,python,built-in,python-internals,Python,Built In,Python Internals,据我所知,python内置函数是从C源代码编译而来,并内置到解释器中。有没有办法找出函数代码在反汇编程序中的位置 添加: 对于这样的函数,id()返回一个地址,不是吗?但当我在调试器中查看它时,它包含的内容与asm代码相去甚远 添加2: 我没有源代码,因为解释器是定制的。所有的内置都是在\uuuuuuuuuuu内置的模块中定义的,由定义 要查找特定的内置函数,请查看和,然后grep Python源代码以获取附加函数的定义。\uuuuuuuuuuuuuuuu中的大多数函数都在同一个文件中定义 例如

据我所知,python内置函数是从C源代码编译而来,并内置到解释器中。有没有办法找出函数代码在反汇编程序中的位置

添加: 对于这样的函数,id()返回一个地址,不是吗?但当我在调试器中查看它时,它包含的内容与asm代码相去甚远

添加2:
我没有源代码,因为解释器是定制的。

所有的内置都是在
\uuuuuuuuuuu内置的
模块中定义的,由定义

要查找特定的内置函数,请查看和,然后grep Python源代码以获取附加函数的定义。
\uuuuuuuuuuuuuuuu
中的大多数函数都在同一个文件中定义

例如,在方法表中可以找到以下方法:

{“dir”,内置dir,METH\u VARARGS,dir\u doc},
并且定义了
builtin\u dir
,委托给
PyObject\u dir()

静态PyObject*
内置目录(PyObject*self,PyObject*args)
{
PyObject*arg=NULL;
if(!PyArg_解包元组(args,“dir”、0、1和arg))
返回NULL;
返回PyObject_Dir(arg);
}
通过Python源代码进行快速grep,我们可以看到,
PyObject\u Dir()
是通过几个助手函数实现的:

/*dir()的实现——如果obj为NULL,则返回当前
(本地)范围。否则,执行对象的自省:返回
可从对象访问的属性名称(假定)的排序列表
*/
PyObject*
PyObject_Dir(PyObject*obj)
{
PyObject*结果;
if(obj==NULL)
/*没有目标——反思当地人*/
结果=_dir_locals();
其他的
/*对象——反思对象*/
结果=_dir_object(obj);
断言(结果==NULL | | PyList|u检查(结果));
if(结果!=NULL&&PyList_排序(结果)!=0){
/*对列表排序失败*/
Py_DECREF(结果);
结果=空;
}
返回结果;
}

所有内置项都在由定义的
\uuuuuu内置\uuuuuuuu>模块中定义

要查找特定的内置函数,请查看和,然后grep Python源代码以获取附加函数的定义。
\uuuuuuuuuuuuuuuu
中的大多数函数都在同一个文件中定义

例如,在方法表中可以找到以下方法:

{“dir”,内置dir,METH\u VARARGS,dir\u doc},
并且定义了
builtin\u dir
,委托给
PyObject\u dir()

静态PyObject*
内置目录(PyObject*self,PyObject*args)
{
PyObject*arg=NULL;
if(!PyArg_解包元组(args,“dir”、0、1和arg))
返回NULL;
返回PyObject_Dir(arg);
}
通过Python源代码进行快速grep,我们可以看到,
PyObject\u Dir()
是通过几个助手函数实现的:

/*dir()的实现——如果obj为NULL,则返回当前
(本地)范围。否则,执行对象的自省:返回
可从对象访问的属性名称(假定)的排序列表
*/
PyObject*
PyObject_Dir(PyObject*obj)
{
PyObject*结果;
if(obj==NULL)
/*没有目标——反思当地人*/
结果=_dir_locals();
其他的
/*对象——反思对象*/
结果=_dir_object(obj);
断言(结果==NULL | | PyList|u检查(结果));
if(结果!=NULL&&PyList_排序(结果)!=0){
/*对列表排序失败*/
Py_DECREF(结果);
结果=空;
}
返回结果;
}