Những phần mở rộng tập tin python có nghĩa là gì?
- .pyc
- .pyd
- .pyo
Sự khác biệt giữa chúng và cách chúng được tạo từ tệp * .py là gì?
Những phần mở rộng tập tin python có nghĩa là gì?
Sự khác biệt giữa chúng và cách chúng được tạo từ tệp * .py là gì?
Câu trả lời:
.py
: Đây thường là mã nguồn đầu vào mà bạn đã viết..pyc
: Đây là mã byte được biên dịch. Nếu bạn nhập một mô-đun, python sẽ xây dựng một *.pyc
tệp có chứa mã byte để làm cho việc nhập lại nó sau này dễ dàng hơn (và nhanh hơn)..pyo
: Đây là định dạng tệp được sử dụng trước Python 3.5 cho *.pyc
các tệp được tạo bằng -O
cờ tối ưu hóa ( ). (xem ghi chú bên dưới).pyd
: Đây cơ bản là một tập tin dll windows. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllNgoài ra để biết thêm về thảo luận về .pyc
vs .pyo
, hãy xem: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (Tôi đã sao chép phần quan trọng bên dưới)
- Khi trình thông dịch Python được gọi với cờ -O, mã được tối ưu hóa được tạo và lưu trữ trong các tệp '.pyo'. Trình tối ưu hóa hiện không giúp được gì nhiều; nó chỉ loại bỏ các tuyên bố khẳng định. Khi -O được sử dụng, tất cả mã byte được tối ưu hóa; Các tệp .pyc bị bỏ qua và các tệp .py được biên dịch thành mã byte được tối ưu hóa.
- Việc chuyển hai cờ -O cho trình thông dịch Python (-OO) sẽ khiến trình biên dịch mã byte thực hiện tối ưu hóa trong một số trường hợp hiếm hoi dẫn đến các chương trình bị hỏng. Hiện tại chỉ có các
__doc__
chuỗi được xóa khỏi mã byte, dẫn đến các tệp '.pyo' nhỏ gọn hơn. Vì một số chương trình có thể dựa vào việc có sẵn những thứ này, bạn chỉ nên sử dụng tùy chọn này nếu bạn biết bạn đang làm gì.- Một chương trình không chạy nhanh hơn khi nó được đọc từ tệp '.pyc' hoặc '.pyo' so với khi nó được đọc từ tệp '.py'; điều duy nhất nhanh hơn về các tệp '.pyc' hoặc '.pyo' là tốc độ chúng được tải.
- Khi tập lệnh được chạy bằng cách đặt tên của nó trên dòng lệnh, mã byte cho tập lệnh không bao giờ được ghi vào tệp '.pyc' hoặc '.pyo'. Do đó, thời gian khởi động của một tập lệnh có thể được giảm bằng cách di chuyển hầu hết mã của nó sang một mô-đun và có một tập lệnh bootstrap nhỏ nhập mô-đun đó. Cũng có thể đặt tên tệp '.pyc' hoặc '.pyo' trực tiếp trên dòng lệnh.
Ghi chú:
Vào ngày 2015-09-15, phiên bản Python 3.5 đã triển khai PEP-488 và loại bỏ .pyo
các tệp. Điều này có nghĩa là .pyc
các tệp đại diện cho cả mã byte không được tối ưu hóa và được tối ưu hóa.
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
tệp. Ngay cả mã byte được tối ưu hóa cũng kết thúc bằng .pyc
phần mở rộng Python 3.5, sau đó.
sys.path
. Xem site
mô-đun.Một danh sách lớn hơn các phần mở rộng tệp Python bổ sung (chủ yếu là hiếm và không chính thức) có thể được tìm thấy tại http://dcjtech.info/topic/python-file-extensions/
.pth
các tập tin.