Python内置模块和内置types/functions有什么关系?

What is the relationship between Python built-in modules and built-in types/functions?

无需导入即可使用内置类型和函数,如 'list, dict, print' 。

但是内置的模块还是需要导入才能使用,比如'time, sys, gc, math, mmap'。

所以他们只是不同的概念,或者内置模块包括内置types/functions?

Python 文档中直接回答了这个问题:https://docs.python.org/3/library/builtins.html#:~:text=This%20module%20provides%20direct%20access,Built%2Din%20Constants%20for%20documentation

你说的是 builtins 模块。

built-ins 命名空间和 built-in 模块之间没有任何关系。不需要导入就可以访问的东西是这样的,因为它被插入到一个特殊的 built-ins 命名空间中,通过 builtins module, while built-in modules 可用的是标准库模块的一个特殊子集,这些模块直接编译到 Python 解释器中可执行。它们是“built-in”这个词的完全不相关的用法。

<built-in function whatever> 中的“built-in”是另一个完全不相关的含义 - 当您谈论 built-in 类型和函数无需导入即可使用时,那确实是 属性 built-ins 命名空间,而显示为 <built-in function whatever> 的函数仅表示它是用 C 语言编写的。

那些其他模块不是 built-in(好吧,无论如何,大多数)。它们只是标准库的一部分,预计在大多数安装中都可用。 “built-in”仅表示您不必导入的所有内容 - 它们在所有模块命名空间中都可用。

sys 这样的一些模块是用 C 实现的,实际上可能是 python 可执行文件的一部分。但是由于通常并不期望所有脚本都需要它们的实现,因此它们仍然是命名空间封装的。没有必要让 sys.version 成为 built-in.