2014-07-13 153 views
0

我试图环顾四周,但找不到任何关于此主题的明确信息。内置功能在哪里实施

是否在每次启动Python时自动导入的模块中实现了内置函数?在这个模块是什么情况下?

或者内建函数只是嵌入Python解释器中的函数?

回答

7

对于CPython,内置函数(大部分)在bltinmodule.c file中执行。

例外主要是类型;例如strdictlistObjects directory of the C source中都有自己的C文件;这些被列为table in the bltinmodule source

从技术上讲,这被视为一个单独的模块对象的实现,但是一个当当前全局名称空间不包含名称时自动搜索。因此,当您在代码中使用abs(),并且全局名称空间中没有abs对象时,还会搜索内置模块以查找该名称。

它也作为__builtin__ module(或Python 3中的builtins)公开,因此即使在代码中隐藏任何内容,也可以访问内置名称。然而,像sys模块一样,它被编译为Python二进制文件,并且不能作为单独的动态加载文件使用。

+0

因此可以说它们嵌入在Python解释器中,不是吗? – zer0uno

+1

@antox:是的,正确的。 –

+1

@antox请注意,有一个'builtins'模块(在python2中的python3。__builtin__中)。该模块由'bltinmodule.c'文件定义。因此,从技术上讲,它们是外部模块的一部分,但是该模块与其他模块的处理方式不同,因为它会搜索是否找不到全局模块。 – Bakuriu