Rah*_*sai 18 python subprocess system python-3.x
我试图了解 python 3 的低级实现。subprocess模块使用了一个名为_posixsubprocess的模块。我试图在我的系统中找到这个模块的位置,发现它是一个存根文件。
有人可以指导我,因为我不知道什么是存根文件以及它们如何在较低级别实现?
exh*_*uma 27
您引用的文件是用 C 编写的 Python 模块。它不是“存根”文件。真正的实现可以在 stdlib 中找到Modules/_posixsubprocess.c。您可以通过查看构建 C 和 C++ 扩展来了解如何编写 C/ C++ 扩展。这应该有助于您理解_posixsubprocess.c.
为了向该文件(它是用 C 编写的“扩展模块”)添加类型提示,将类型提示添加到扩展名为.pyi.
该文件可以在存根文件集合的 typeshed中找到。typeshed 还包含第三方模块的存根,这是历史遗留物。自从PEP-561被采用后,就不再需要了。
存根文件包含普通 Python 模块的类型提示信息。完整的官方文档可以在 PEP-484 中关于存根文件的部分中找到。
例如,如果您有这样的 Python 模块mymodule.py:
def myfunction(name):
return "Hello " + name
Run Code Online (Sandbox Code Playgroud)
然后你可以通过 stub-file 添加类型提示mymodule.pyi。请注意,这里的省略号 ( ...) 是语法的一部分,因此下面的代码块确实显示了完整的文件内容:
def myfunction(name: str) -> str: ...
Run Code Online (Sandbox Code Playgroud)
它们看起来与 C 头文件非常相似,因为它们只包含函数签名,但它们的使用完全是可选的。
您还可以直接在.py模块中添加类型提示,如下所示:
def myfunction(name: str) -> str:
return "Hello " + name
Run Code Online (Sandbox Code Playgroud)
但是在某些情况下,您希望在存根中将它们分开:
# type: ...注释语法| 归档时间: |
|
| 查看次数: |
10285 次 |
| 最近记录: |