ข้อดี:
ครั้งแรก: อ่อนเพลีย obfuscation พ่ายแพ้
ข้อสอง: หากการคอมไพล์ส่งผลให้ไฟล์มีขนาดเล็กลงอย่างมีนัยสำคัญคุณจะได้รับเวลาโหลดเร็วขึ้น ดีสำหรับเว็บ
ประการที่สาม: Python สามารถข้ามขั้นตอนการรวบรวมได้ เร็วขึ้นที่โหลดเริ่มต้น ดีสำหรับซีพียูและเว็บ
ข้อที่สี่: ยิ่งคุณแสดงความคิดเห็นมากเท่าใดไฟล์.pyc
หรือ.pyo
ไฟล์ขนาดเล็กก็จะยิ่งถูกเปรียบเทียบกับ.py
ไฟล์ต้นฉบับ
ประการที่ห้า: ผู้ใช้ปลายทางที่มีเพียงไฟล์.pyc
หรือ.pyo
ไฟล์ในมือเท่านั้นมีโอกาสน้อยกว่ามากที่จะนำเสนอคุณด้วยข้อผิดพลาดที่เกิดจากการเปลี่ยนแปลงที่ไม่ได้ย้อนกลับที่พวกเขาลืมบอกคุณเกี่ยวกับ
หก: หากคุณเล็งไปที่ระบบฝังตัวการรับไฟล์ขนาดเล็กลงเพื่อฝังอาจหมายถึงข้อดีและสถาปัตยกรรมนั้นมีความเสถียรดังนั้นข้อเสียเปรียบหนึ่งซึ่งมีรายละเอียดด้านล่างไม่ได้เกิดขึ้น
การรวบรวมระดับสูงสุด
มีประโยชน์ที่จะทราบว่าคุณสามารถรวบรวมไฟล์ไพ ธ อนระดับบนสุดเป็น.pyc
ไฟล์ด้วยวิธีนี้:
python -m py_compile myscript.py
สิ่งนี้จะลบความคิดเห็น มันทิ้งdocstrings
เหมือนเดิม หากคุณต้องการกำจัดdocstrings
เช่นกัน (คุณอาจต้องคิดอย่างจริงจังว่าทำไมคุณถึงทำอย่างนั้น) จากนั้นรวบรวมวิธีนี้แทน ...
python -OO -m py_compile myscript.py
... และคุณจะได้รับ.pyo
ไฟล์แทน.pyc
ไฟล์; แจกจ่ายอย่างเท่าเทียมกันในแง่ของการทำงานที่สำคัญของรหัส แต่มีขนาดเล็กตามขนาดของถอดออกdocstrings
(และไม่เข้าใจได้อย่างง่ายดายสำหรับการจ้างงานตามมาถ้ามันมีดีdocstrings
ในครั้งแรก) แต่ดูข้อเสียเปรียบสามด้านล่าง
โปรดทราบว่าไพ ธ อนใช้.py
วันที่ของไฟล์หากมีอยู่เพื่อตัดสินใจว่าควรรัน.py
ไฟล์ตรงข้ามกับ.pyc
หรือ.pyo
ไฟล์ --- ดังนั้นให้แก้ไขไฟล์. py ของคุณและ.pyc
หรือ.pyo
ล้าสมัยและประโยชน์ใด ๆ ที่คุณได้รับจะหายไป คุณต้องคอมไพล์อีกครั้งเพื่อรับประโยชน์.pyc
หรือ.pyo
กลับมาอีกครั้งเช่นพวกเขาอาจจะ
ข้อเสีย:
ข้อแรก: มี "เวทคุกกี้" ใน.pyc
และ.pyo
ไฟล์ที่ระบุสถาปัตยกรรมของระบบที่รวบรวมไฟล์ไพ ธ อนหากคุณแจกจ่ายไฟล์เหล่านี้หนึ่งไฟล์ในสภาพแวดล้อมที่แตกต่างกัน หากคุณแจกจ่าย.pyc
หรือ.pyo
ไม่เชื่อมโยง.py
เพื่อคอมไพล์ใหม่หรือtouch
ดังนั้นจึงแทนที่.pyc
หรือ.pyo
ผู้ใช้ไม่สามารถแก้ไขได้
ที่สอง: หากdocstrings
ถูกข้ามไปพร้อมกับการใช้-OO
ตัวเลือกบรรทัดคำสั่งตามที่อธิบายไว้ข้างต้นจะไม่มีใครสามารถรับข้อมูลนั้นได้ซึ่งจะทำให้การใช้รหัสยากขึ้น (หรือเป็นไปไม่ได้)
ประการที่สาม: -OO
ตัวเลือกPython ยังใช้การปรับแต่งบางอย่างตาม-O
ตัวเลือกบรรทัดคำสั่ง ซึ่งอาจส่งผลให้เกิดการเปลี่ยนแปลงในการดำเนินงาน การเพิ่มประสิทธิภาพที่รู้จักคือ:
sys.flags.optimize
= 1
assert
งบถูกข้ามไป
__debug__
= เท็จ
ข้อที่สี่: ถ้าคุณตั้งใจทำให้สคริปต์ไพ ธ อนของคุณสามารถทำงานได้บางอย่างตามคำสั่งของ#!/usr/bin/python
บรรทัดแรกสิ่งนี้จะถูกแยกออกมา.pyc
และ.pyo
ไฟล์และการทำงานนั้นจะหายไป
ประการที่ห้า: ค่อนข้างชัดเจน แต่ถ้าคุณรวบรวมรหัสของคุณไม่เพียง แต่จะส่งผลกระทบต่อการใช้งานของมัน แต่โอกาสที่ผู้อื่นจะเรียนรู้จากการทำงานของคุณลดลงซึ่งมักจะรุนแรง