Що означають ці розширення файлів python?
- .pyc
- .pyd
- .pyo
Які відмінності між ними і як вони генеруються з файлу * .py?
Що означають ці розширення файлів python?
Які відмінності між ними і як вони генеруються з файлу * .py?
Відповіді:
.py
: Зазвичай це вхідний вихідний код, який ви написали..pyc
: Це компільований байт-код. Якщо ви імпортуєте модуль, python створить *.pyc
файл, що містить байт-код, щоб зробити його імпорт знову легшим (і швидшим)..pyo
: Це був формат файлів, який використовувався до Python 3.5 для *.pyc
файлів, створених з -O
прапором оптимізації ( ). (див. примітку нижче).pyd
: Це в основному файл DLL Windows. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllТакож для подальшої дискусії щодо .pyc
vs .pyo
погляньте на сторінку: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (я скопіював важливу частину нижче)
- Коли інтерпретатор Python викликається прапором -O, оптимізований код генерується та зберігається у файлах '.pyo'. Зараз оптимізатор не дуже допомагає; він видаляє лише заяви твердження. Коли використовується -O, оптимізується весь байт-код; .pyc файли ігноруються, а .py файли збираються для оптимізованого байт-коду.
- Передача двох-прапорів на інтерпретатор Python (-OO) призведе до того, що компілятор байт-кодів здійснить оптимізацію, яка в деяких рідкісних випадках може призвести до несправних програм. Наразі
__doc__
з байт-коду видаляються лише рядки, що призводить до отримання більш компактних файлів '.pyo'. Оскільки деякі програми можуть розраховувати на доступність їх, вам слід використовувати цю опцію лише тоді, коли ви знаєте, що робите.- Програма не запускається швидше, коли вона читається з файлу '.pyc' або '.pyo', ніж коли вона читається з файлу '.py'; єдине, що швидше стосується файлів '.pyc' або '.pyo', - це швидкість, з якою вони завантажуються.
- Коли сценарій запускається, вказуючи своє ім'я в командному рядку, байт-код цього сценарію ніколи не записується у файл '.pyc' або '.pyo'. Таким чином, час запуску сценарію може бути скорочено, переміщуючи більшу частину його коду до модуля та маючи невеликий сценарій завантаження, який імпортує цей модуль. Також можна вказати файл '.pyc' або '.pyo' безпосередньо в командному рядку.
Примітка:
15.09.2015 р. Випуск Python 3.5 реалізував PEP-488 та ліквідував .pyo
файли. Це означає, що .pyc
файли представляють як неоптимізований, так і оптимізований байт-код.
def f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
.pyo
файлів. Навіть оптимізований байт-код закінчується .pyc
розширенням Python 3.5.
sys.path
. Див. site
Модуль.Більший список додаткових розширень файлів Python (здебільшого рідкісних та неофіційних) можна знайти на веб- сайті http://dcjtech.info/topic/python-file-extensions/
.pth
файли.