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

Chr*_*man 38 python

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

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

Kru*_*pös 28

我认为iin .pyi代表"接口"

Java中接口的定义:

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

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

  • 'Mypy'存储库中,他们明确地将"存根"文件称为公共接口:

存根文件仅包含模块的公共接口的描述,而不进行任何实现.

因为Python中不存在"接口"(参见抽象类和接口之间的这个问题)我认为设计者打算为它专门设置一个特殊的扩展.

pyi实现"存根"文件(Martin Fowler的定义)

存根:为测试期间进行的调用提供固定答案,通常不会对测试中编程的任何内容做出任何响应.

但人们比"存根"文件更熟悉接口,因此更容易选择.pyi而不是.pys避免不必要的混淆.

  • 此外,如果你让 Python 程序员制作 pys,他们的 pys 在哪里,如果他们看过 pys 之类的东西,他们会傻笑。 (8认同)
  • 你提出了完全不相关的术语。Java接口是Java实现多重继承的方式。存根被简化,但工作实现用于加速自动化测试(例如内存数据库)。 (5认同)
  • '我认为 .pyi 中的 i 代表“Interface”。Java 中接口的定义——为什么要提出一种完全不相关的语言,以不同的方式使用该术语? (2认同)

Rib*_*ibo 9

显然,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

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

Pyp*_*hly 6

i.pyi表示“接口”。

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

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

  • 优秀的参考!这支持了“.pyi”的概念首先诞生于 mypy 项目,然后在与此线程讨论后得到更广泛的适应 https://github.com/python/typing/issues/22 (2认同)