在Python中,"i"在.pyi扩展名中表示什么?
在PEP-484中,它提到.pyi是"存根文件",但没有关于扩展的助记符帮助.那么"我"的意思是"包括"吗?"实施"?"接口"?
我认为i
in .pyi
代表"接口"
Java中接口的定义:
Java编程语言中的接口是一种抽象类型,用于指定类必须实现的行为
从Python 类型化的 github存储库:
每个Python模块都由
.pyi
"stub"表示.这是一个普通的Python文件(即,它可以由Python 3解释),除了所有方法都是空的.
在'Mypy'存储库中,他们明确地将"存根"文件称为公共接口:
存根文件仅包含模块的公共接口的描述,而不进行任何实现.
因为Python中不存在"接口"(参见抽象类和接口之间的这个问题)我认为设计者打算为它专门设置一个特殊的扩展.
pyi
实现"存根"文件(Martin Fowler的定义)
存根:为测试期间进行的调用提供固定答案,通常不会对测试中编程的任何内容做出任何响应.
但人们比"存根"文件更熟悉接口,因此更容易选择.pyi
而不是.pys
避免不必要的混淆.
显然,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