Що означає "i" у розширенні .pyi Python?


83

Що в Python означає "i" у розширенні .pyi?

У PEP-484 у ньому згадується .pyi - це "файл заглушки", але немає мнемонічної допомоги щодо розширення. То чи "i" означає "Включити"? "Впровадження"? "Інтерфейс"?


У відповідності з цимpyi розширення використовується для Cognos Model Files. Можливо, ви переглядаєте pycфайл із іншим розширенням, який є компільованим Python Script. Спробуйте порівняти контрольну суму з фактичним pycфайлом, і тоді ви знаєте, що це принаймні двійковий файл.
Престон Хагер

Згідно з документацією на Python пакет впадає в очі: [Пітон Інформація] [1] [1]: pypi.python.org/pypi/pyi/0.1.0
NationWidePants

1
@NationWidePants Я думаю, що це інше pyi.
tobias_k

Відповіді:


66

Я думаю, що iв .pyiрозшифровується як "Інтерфейс"

Визначення інтерфейсу в Java :

Інтерфейс у мові програмування Java - це абстрактний тип, який використовується для вказівки поведінки, яку повинні реалізовувати класи

Кожен модуль Python представлений .pyi"заглушкою". Це звичайний файл Python (тобто його може інтерпретувати Python 3), за винятком того, що всі методи порожні .

  • У сховищі 'Mypy' вони явно згадують "заглушені" файли як загальнодоступні інтерфейси:

Файл заглушок містить лише опис загальнодоступного інтерфейсу модуля без будь-яких реалізацій.

Оскільки "Інтерфейсів" у Python не існує (див. Це запитання SO між класом Abstract та Interface ), я думаю, що дизайнери мали намір виділити для нього спеціальне розширення.

pyiреалізує файл "заглушки" (визначення від Мартіна Фаулера )

Заглушки : надайте готові відповіді на дзвінки, зроблені під час тесту, зазвичай взагалі не реагуючи ні на що, окрім того, що запрограмовано для тесту.

Але люди більше знайомі з інтерфейсами, ніж із "заглушеними" файлами, тому було простіше вибрати .pyi, аніж .pysуникнути зайвої плутанини.


5
Крім того, програмісти Python будуть хихикати, якщо ви попросите їх зробити pys, де їх pys, якщо вони дивилися на pys, подібні речі.
Ion Freeman

Методи повинні бути порожніми? або це може бути якесь довідкове здійснення?
Роберт МакПайтонс

22

Очевидно, 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
Чудова інформація. Чи дає вона остаточну відповідь на те, що означає "i" у "pyi"?
ChrisFreeman

Я не бачив жодного. Як щодо "самоаналізу"? (Я просто намагався зрозуміти, що це за файл)
Рібо

@ChrisFreeman пише, що насправді у другому посиланні (від PyCharm) буквально наступне "PyCharm підтримує файли-заглушки Python із розширенням .pyi. Ці файли дозволяють задавати підказки типу, використовуючи синтаксис Python 3 для Python 2 і 3. Файли-заглушки створено як зазвичай, але ви повинні вказати розширення .pyi явно. "
silpol

2

iв.pyi означає «інтерфейс».

.pyiРозширення було вперше згадано в цьому питанні нитки GitHub , де JukkaL каже:

Я б, напевно, вважав за краще розширення з однією лише крапкою. Це також має бути те, що не використовується (це не повинно використовуватися cython тощо). .pys, здається, використовується в Windows (або був). Можливо .pyi, де я позначає визначення інтерфейсу?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.