在哪里可以找到 python 标准库代码?

新手上路,请多包涵

我想尝试查找 Python 标准库中某些模块的源代码,但无法找到它们。下载 python tarball 后,我尝试查看模块目录,但它主要有 .c 文件。我还尝试查看操作系统 (mac osx) 已经附带的 python 具有它的模块的目录,它似乎主要有 .pyc 和 .pyo 文件。如果有人能帮助我,我将不胜感激。

(我尝试了问题 How do I find the location of Python module sources? 中的建议,但没有成功)

原文由 iman453 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

在 cpython 中,许多模块是用 C 实现的,而不是用 Python 实现的。您可以在 Modules/ 中找到它们,而纯 Python 的位于 Lib/ 中。

在某些情况下(例如 json 模块),Python 源代码自己提供该模块,并且仅在可用时使用 C 模块(以提高性能)。对于其余模块,您可以查看 PyPy 的实现

原文由 phihag 发布,翻译遵循 CC BY-SA 4.0 许可协议

这将取决于您定义为 Standard Library 的内容。

Python 文档 说:

…本库参考手册描述了与 Python 一起分发的标准库。它还描述了一些通常包含在 Python 发行版中的可选组件。

Python 的标准库非常广泛,提供了广泛的功能,如下面长长的目录所示。该库包含内置模块(用 C 语言编写),提供对 Python 程序员无法访问的文件 I/O 等系统功能的访问,以及用 Python 编写的模块,为系统中出现的许多问题提供标准化解决方案日常编程。其中一些模块明确设计为通过将平台特定抽象为平台中立的 API 来鼓励和增强 Python 程序的可移植性。

如果您采用广泛的标准, Python 文档 会明确回答您的要求,我引用:

探索 CPython 的内部结构。

CPython 源代码布局。

本指南概述了 CPython 的代码结构。它用作模块和内置文件位置的摘要。

对于 Python 模块,典型的布局是:

 Lib/<module>.py
Modules/_<module>.c
Lib/test/test_<module>.py
Doc/library/<module>.rst

对于仅扩展模块,典型的布局是:

 Modules/<module>module.c
Lib/test/test_<module>.py
Doc/library/<module>.rst

对于内置类型,典型的布局是:

 Objects/<builtin>object.c
Lib/test/test_<builtin>.py
Doc/library/stdtypes.rst

对于内置函数,典型的布局是:

 Python/bltinmodule.c
Lib/test/test_builtin.py
Doc/library/functions.rst

一些例外:

 builtin type int is at Objects/longobject.c
builtin type str is at Objects/unicodeobject.c
builtin module sys is at Python/sysmodule.c
builtin module marshal is at Python/marshal.c
Windows-only module winreg is at PC/winreg.c

原文由 Guzman Ojero 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏