0
我试图环顾四周,但找不到任何关于此主题的明确信息。内置功能在哪里实施
是否在每次启动Python时自动导入的模块中实现了内置函数?在这个模块是什么情况下?
或者内建函数只是嵌入Python解释器中的函数?
我试图环顾四周,但找不到任何关于此主题的明确信息。内置功能在哪里实施
是否在每次启动Python时自动导入的模块中实现了内置函数?在这个模块是什么情况下?
或者内建函数只是嵌入Python解释器中的函数?
对于CPython,内置函数(大部分)在bltinmodule.c
file中执行。
例外主要是类型;例如str
和dict
和list
在Objects
directory of the C source中都有自己的C文件;这些被列为table in the bltinmodule
source。
从技术上讲,这被视为一个单独的模块对象的实现,但是一个当当前全局名称空间不包含名称时自动搜索。因此,当您在代码中使用abs()
,并且全局名称空间中没有abs
对象时,还会搜索内置模块以查找该名称。
它也作为__builtin__
module(或Python 3中的builtins
)公开,因此即使在代码中隐藏任何内容,也可以访问内置名称。然而,像sys
模块一样,它被编译为Python二进制文件,并且不能作为单独的动态加载文件使用。
因此可以说它们嵌入在Python解释器中,不是吗? – zer0uno
@antox:是的,正确的。 –
@antox请注意,有一个'builtins'模块(在python2中的python3。__builtin__中)。该模块由'bltinmodule.c'文件定义。因此,从技术上讲,它们是外部模块的一部分,但是该模块与其他模块的处理方式不同,因为它会搜索是否找不到全局模块。 – Bakuriu