ข้อดี:
ครั้งแรก: อ่อนเพลีย 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ไฟล์และการทำงานนั้นจะหายไป
ประการที่ห้า: ค่อนข้างชัดเจน แต่ถ้าคุณรวบรวมรหัสของคุณไม่เพียง แต่จะส่งผลกระทบต่อการใช้งานของมัน แต่โอกาสที่ผู้อื่นจะเรียนรู้จากการทำงานของคุณลดลงซึ่งมักจะรุนแรง