gpt4 book ai didi

python - python 中 stub 文件 (.pyi) 有什么用?

转载 作者:行者123 更新时间:2023-12-02 04:32:14 35 4
gpt4 key购买 nike

我正在尝试了解 python 3 的较低级别实现。 subprocess module 使用一个名为 _posixsubprocess 的模块。 。我尝试在系统中查找该模块的位置,发现它是一个 stub 文件。

有人可以指导我吗,因为我不知道什么是 stub 文件以及它们如何在较低级别实现?

最佳答案

_posixsubprocess

您引用的文件是用 C 编写的 Python 模块。它不是“ stub ”文件。真正的实现可以在 stdlib 中找到 Modules/_posixsubprocess.c 。您可以通过查看 Building C and C++ Extensions 来了解如何编写 C/C++ 扩展。 。这应该可以帮助您理解 _posixsubprocess.c 中的代码。

为了向该文件(用 C 编写的“扩展模块”)添加类型提示,类型提示将添加到扩展名为 .pyi 的“ stub ”文件中.

该文件可以在 the typeshed 中找到这是 stub 文件的集合。 Typeshed 还包含第三方模块的 stub ,这是历史遗留的。从 PEP-561 开始就不再需要了已被采纳。

关于 stub /pyi 文件

stub 文件包含普通 Python 模块的类型提示信息。完整的官方文档可以找到 in the section about stub-files in PEP-484 .

例如,如果您有一个如下所示的 Python 模块 mymodule.py:

def myfunction(name):
return "Hello " + name

然后您可以通过 stub 文件 mymodule.pyi 添加类型提示。请注意,这里的省略号 (...) 是语法的一部分,因此下面的代码块真正显示了完整的文件内容:

def myfunction(name: str) -> str: ...

它们看起来与 C 头文件非常相似,因为它们只包含函数签名,但它们的使用完全是可选的。

您还可以直接在 .py 模块中添加类型提示,如下所示:

def myfunction(name: str) -> str:
return "Hello " + name

但在某些情况下,您希望将它们单独保存在 stub 中:

  • 您希望保持代码与 Python 2 兼容,并且不喜欢 # type: ... 注释语法
  • 您将函数注释用于其他用途,但仍想使用类型提示
  • 您正在将类型提示添加到现有代码库中,并希望最大限度地减少现有文件中的代码改动

关于python - python 中 stub 文件 (.pyi) 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59051631/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com