问题描述
内置类型和功能无需导入即可使用,例如“列表,字典,打印”。
但是内置模块仍需要在使用之前导入,例如'time,sys,gc,math,mmap'。
那么它们只是不同的概念,还是内置模块包含内置类型/功能?
解决方法
内置名称空间和内置模块之间没有任何关系。无需导入即可访问的东西是这种方式,因为它已插入到特殊的内置命名空间中,可通过builtins
module获得,而built-in modules是标准库模块的特殊子集,可直接编译到Python中解释器可执行文件。它们是“内置”一词的完全无关的用法。
<built-in function whatever>
中的“内置”是另一种完全不相关的含义-当您谈论内置类型和函数无需导入即可使用时,这实际上是内置命名空间的属性,而函数显示为<built-in function whatever>
只是意味着它是用C编写的。
这个问题可以直接在Python文档https://docs.python.org/3/library/builtins.html#:~:text=This%20module%20provides%20direct%20access,Built%2Din%20Constants%20for%20documentation中得到解答。
您正在谈论builtins
模块。
其他模块不是内置的(嗯,无论如何大多数都是这样)。它们只是标准库的一部分,并且有望在大多数安装中使用。 “内置”仅表示您无需导入的所有内容-它们在所有模块名称空间中都可用。
某些模块,例如sys
是用C实现的,实际上可能是python可执行文件的一部分。但是,由于通常不希望所有脚本都需要它们的实现,因此它们仍然是名称空间封装的。无需内置sys.version
。