Tôi muốn biết tệp pyc (python bytecode) là gì. Tôi muốn biết tất cả các chi tiết. Tôi muốn biết về cách thức các tệp pyc giao diện với trình biên dịch. Nó là một sự thay thế cho exe? Liệu nó có cần chạy bởi python không? Ứng dụng này có thể di động như tệp .py không? Tôi nên sử dụng thông tin này ở đâu?Nơi để sử dụng một tệp pyc
Trả lời
Để bổ sung câu trả lời của Mike Graham, có một số nhận xét thú vị here cung cấp một số thông tin về tệp pyc. Thú vị nhất tôi nghi ngờ đối với bạn là dòng:
Một chương trình không chạy nhanh hơn khi được đọc từ tệp '.pyc' hoặc '.pyo' hơn khi được đọc từ '.py ' tập tin; điều duy nhất nhanh hơn về các tệp ‘.pyc’ hoặc ‘.pyo’ là tốc độ tải chúng.
Cái nào chạm vào móng trên đầu w.r.t. mấu chốt của một tập tin pyc. A pyc
là một tệp đã được giải thích trước py
. Mã bytecode python vẫn giống như được tạo từ tệp py
- sự khác biệt là khi sử dụng tệp pyc
bạn không phải trải qua quá trình tạo đầu ra pyc
(mà bạn thực hiện khi chạy tệp py
). Đọc vì bạn không phải chuyển đổi tập lệnh python sang mã byte bytecode.
Nếu bạn đã gặp các tệp .class trong java
đây là một khái niệm tương tự - sự khác biệt là trong java bạn phải thực hiện việc biên dịch bằng cách sử dụng javac
trước khi trình thông dịch java thực thi ứng dụng. Cách khác nhau để làm việc (nội bộ sẽ rất khác nhau vì chúng là các ngôn ngữ khác nhau) nhưng cùng một ý tưởng rộng.
Python bytecode yêu cầu Python chạy, không thể chạy độc lập mà không có Python và cụ thể cho bản phát hành Python cụ thể x.y
. Nó phải di động trên nền tảng cho cùng một phiên bản. Không có lý do phổ biến để bạn sử dụng nó; Python sử dụng nó để tối ưu hóa việc phân tích cú pháp tệp .py của bạn trên các lần nhập lặp lại. Cuộc sống của bạn sẽ được bỏ qua sự tồn tại của các tập tin pyc.
Từ docs:
Là một quan trọng tăng tốc thời gian khởi động cho các chương trình ngắn có sử dụng rất nhiều các module chuẩn, nếu một tập tin gọi spam.pyc tồn tại trong thư mục thư rác .py được tìm thấy, điều này được giả định là chứa một phiên bản đã được "biên dịch byte" của spam mô-đun. Thời gian sửa đổi của phiên bản spam.py được sử dụng để tạo spam.pyc được ghi lại trong spam.pyc và tệp .pyc bị bỏ qua nếu chúng không khớp.
Xem phần ref để biết thêm thông tin. Nhưng một số câu trả lời cụ thể:
Nội dung của tệp spam.pyc là nền tảng độc lập, do đó thư mục mô-đun Python có thể được chia sẻ bởi các máy của các kiến trúc khác nhau.
Đó là không thực thi; nó được sử dụng trong nội bộ bởi trình biên dịch như là một bước trung gian.
Nói chung, bạn không tạo tệp .pyc bằng tay: trình thông dịch tự động tạo chúng.
- 1. Thay đổi thư mục nơi tệp .pyc được tạo
- 2. Tệp Pydev và * .pyc
- 3. Các tệp Python 2.5 .pyc có tương thích với các tệp Python 2.6 .pyc không?
- 4. Dừng Python tạo tệp pyc trong shebang
- 5. Nơi sử dụng wsgen?
- 6. Việc cần làm với tệp pyc khi Django hoặc python được sử dụng với Mercurial?
- 7. Làm cách nào để tránh các tệp .pyc?
- 8. Sử dụng mysqlimport nơi tên tệp khác với tên bảng
- 9. Tạo .pyc từ Python AST?
- 10. Làm cho Python bỏ qua các tệp .pyc
- 11. Khi nào các tệp .pyc được làm mới?
- 12. Nơi đặt tệp .htaccess?
- 13. Decompile Python 2.7 .pyc
- 14. Nơi để sử dụng StringBuffer/StringBuilder hơn Chuỗi
- 15. nơi để lấy các tệp mẫu củax để kiểm tra?
- 16. Làm thế nào để biên dịch tất cả các tệp py thành tệp pyc trong một thư mục bằng cách viết một tập lệnh python?
- 17. Nơi lưu trữ chuỗi kết nối được nhiều ứng dụng sử dụng trong cùng một máy?
- 18. Nơi giữ tệp .plist trong ứng dụng iphone
- 19. Các tệp bytecode được biên dịch (.pyc) có thể được tạo trong thư mục khác không?
- 20. Nơi đặt tệp thuộc tính?
- 21. Nơi lưu trữ tệp nhật ký ứng dụng trên Windows
- 22. Nơi đặt tài liệu riêng tư để sử dụng trong các ứng dụng Rails?
- 23. LOAD DATA từ tệp CSV nơi doublequote được sử dụng làm ký tự thoát
- 24. nơi để tuyên bố các giao thức để tái sử dụng trong Objective-C
- 25. Nơi để ghi các tệp tạm thời của tôi vào?
- 26. Dịch vụ WCF. Nơi để thêm. Tệp svc
- 27. Nơi đặt các tệp JS cho NodeJS để xem chúng
- 28. nơi đặt các tệp .properties trong một dự án Eclipse?
- 29. Nơi đặt một tệp nhật ký gỡ lỗi cho ứng dụng daemon của tôi?
- 30. Sử dụng XSLT để dịch một tệp XML