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

时间:2017-01-19 06:02:57

标签: python

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

PEP-484中,它提到.pyi是“存根文件”,但没有关于扩展名的助记符帮助。那么“我”的意思是“包括”吗? “实施”? “接口”?

4 个答案:

答案 0 :(得分:17)

我认为i中的.pyi代表"界面"

Java中接口的定义:

  

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

  • 来自Python typeshed github repository:
  

每个Python模块由.pyi" stub"表示。这是正常的   Python文件(即,它可以由Python 3解释),除了所有   方法是空的

  • 'Mypy'存储库中,他们明确提到" stub"文件作为公共接口:
  

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

因为"接口"在Python中不存在(见SO question between Abstract class and Interface)我认为设计师打算为它专门设置一个扩展。

pyi实现" stub"文件(来自Martin Fowler的定义)

  

存根:通常为测试期间拨打的电话提供固定答案   没有回应任何超出为...编程的任何事情   测试

但是人们对接口的熟悉程度要高于" stub"因此,选择.pyi而不是.pys更容易,以避免不必要的混淆。

答案 1 :(得分:2)

显然PyCharm为此创建了.pyi文件:

The *.pyi files are used by PyCharm and other development tools to provide
more information, such as PEP 484 type hints, than it is able to glean from
introspection of extension types and methods.  They are not intended to be
imported, executed or used for any other purpose other than providing info
to the tools. If you don't use use a tool that makes use of .pyi files then
you can safely ignore this file.

See: 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

答案 2 :(得分:2)

i中的.pyi代表“界面”。

this GitHub issue thread中首先提到了.pyi扩展名,其中JukkaL说:

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

答案 3 :(得分:0)

另一种解释 Wing 无法弄清楚的模块内容的方法是使用 pyi Python 接口文件。该文件只是一个 Python 框架,具有适当的结构、调用签名和返回值,以对应于模块中指定的函数、属性、类和方法。