“ i”在Python .pyi扩展名中代表什么?


83

在Python中,“。i”扩展名中的“ i”代表什么?

PEP-484中,它提到.pyi是“存根文件”,但扩展名上没有助记符。那么“ i”是指“包含”吗?“实施”?“接口”?


根据pyi扩展用于为Cognos模型文件。也许您正在看的pyc文件扩展名为Python Script Compiled。尝试将校验和与实际pyc文件进行比较,然后知道它至少是一个二进制文件。
普雷斯顿·哈格

根据Python软件包上的文档,它的含义似乎是:[PYthon信息] [1] [1]:pypi.python.org/pypi/pyi/0.1.0
NationWidePants

1
@NationWidePants我认为这是不同的pyi
tobias_k

Answers:


66

我认为iin.pyi代表“接口”

Java接口的定义:

Java编程语言中的接口是一种抽象类型,用于指定类必须实现的行为

每个Python模块都由一个.pyi“存根”表示。这是一个普通的Python文件(即可以由Python 3解释),但所有方法均为空

  • “ Mypy”存储库中,他们明确提到“存根”文件作为公共接口:

存根文件仅包含模块公共接口的描述,而没有任何实现。

因为“接口”在Python中不存在(请参见Abstract类和Interface之间的SO问题),所以我认为设计人员打算为其专门进行扩展。

pyi实现“存根”文件(来自Martin Fowler的定义)

存根(Stub):为测试期间进行的通话提供固定答案,通常对测试中未编程的内容完全不响应。

但是人们比“存根”文件更熟悉接口,因此选择.pyi它比.pys避免不必要的混乱更容易。


5
另外,如果您要求他们制作py,Python程序员会咯咯笑,他们的py在哪里,如果他们看py,那么他们会傻笑。
离子弗里曼

方法必须为空吗?还是可以参考一些实现?
罗伯特·麦克Python

21

显然,PyCharm创建.pyi文件是出于其自身的目的:

* .pyi文件被PyCharm和其他开发工具用来提供更多信息,例如PEP 484类型提示,而无法从扩展类型和方法的自省中收集信息。除向工具提供信息外,不得将其导入,执行或用于任何其他目的。如果您不使用使用.pyi文件的工具,则可以放心地忽略此文件。

参见:https : //www.python.org/dev/peps/pep-0484/ https://www.jetbrains.com/help/pycharm/2016.1/type-hinting-in-pycharm.html

在以下位置找到此评论: python27/Lib/site-packages/wx/core.pyi


4
很棒的信息。它是否对“ pyi”中的“ i”代表什么给出了明确的答案?
ChrisFreeman

我没看到一个。“自省”怎么样?(我只是想了解文件是什么)
Ribo,

@ChrisFreeman它实际上在第二个引用(由PyCharm撰写)中说了下一个“ PyCharm支持扩展名为.pyi的Python存根文件。这些文件使您可以使用Python 3语法为Python 2和3指定类型提示。存根文件是创建,但必须显式指定扩展名.pyi。”
silpol

2

i.pyi表示“接口”。

.pyi扩展首先在此GitHub问题线程中提到,JukkaL说:

我可能更希望只使用一个点的扩展名。它还需要是未使用的东西(cython等不应使用)。.pys似乎已在Windows中使用(或曾经)。也许.pyi,我代表接口定义在哪里?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.