มาตรฐานการเข้ารหัส Python / แนวทางปฏิบัติที่ดีที่สุด [ปิด]


116

โดยทั่วไปแล้วใน python คุณใช้PEP 8 - Style Guide สำหรับ Python Codeเป็นมาตรฐาน / แนวทางการเข้ารหัสของคุณหรือไม่? มีมาตรฐานที่เป็นทางการอื่น ๆ ที่คุณต้องการหรือไม่?


1
//, การเชิญชวน "ความชอบของผู้ชม" ในตอนแรกอาจดูเหมือนไม่เป็นอันตราย แต่ในตอนแรกการเรียกร้องแบบสแต็กโอเวอร์ให้กลายเป็นกลไกการสำรวจความคิดเห็นซึ่งเป็นประชาธิปไตยในทางที่ผิดของคนไม่กี่คนที่ต่อต้านคนจำนวนมาก "มี ________ อื่น ๆ ที่คุณต้องการหรือไม่" คือแท้จริงแล้วขอให้พวกเขาชอบไม่ใช่ข้อเท็จจริง
Nathan Basanese

คำตอบ:


150

"ใน python โดยทั่วไปคุณใช้ PEP 8 - Style Guide สำหรับ Python Code เป็นมาตรฐาน / แนวทางการเข้ารหัสของคุณหรือไม่มีมาตรฐานที่เป็นทางการอื่น ๆ ที่คุณต้องการหรือไม่"

ดังที่คุณกล่าวตามPEP 8สำหรับข้อความหลักและPEP 257สำหรับข้อตกลง docstring

นอกจาก Python Style Guides แล้วฉันขอแนะนำให้คุณอ้างอิงสิ่งต่อไปนี้:

  1. รหัสเหมือน Pythonista: Idiomatic Python
  2. ข้อผิดพลาดทั่วไปและหูด
  3. จะไม่เขียนโค้ด Python ได้อย่างไร
  4. Python gotcha

14

ฉันปฏิบัติตามPython Idioms and Efficiency Guidelines โดย Rob Knight ฉันคิดว่ามันเหมือนกับ PEP 8 ทุกประการ แต่เป็นแบบสังเคราะห์มากกว่าและอิงจากตัวอย่าง

หากคุณใช้ wxPython คุณอาจต้องการตรวจสอบStyle Guide สำหรับโค้ด wxPythonโดย Chris Barker เช่นกัน


8

ฉันติด PEP-8 อย่างใกล้ชิด

มีสามสิ่งเฉพาะที่ฉันไม่สามารถใส่ใจที่จะเปลี่ยนเป็น PEP-8 ได้

  • หลีกเลี่ยงช่องว่างภายนอกทันทีภายในวงเล็บวงเล็บหรือวงเล็บปีกกา

    แนะนำ: spam(ham[1], {eggs: 2})

    ฉันทำสิ่งนี้ต่อไป: spam( ham[ 1 ], { eggs: 2 } )

    ทำไม? นิสัยที่ฝังแน่นมานานกว่า 30 ปีคือการแอบอ้าง () เทียบกับชื่อฟังก์ชันหรือคำหลักคำสั่ง (ใน C) เริ่มต้นด้วย Fortran IV ในยุค 70

  • ใช้ช่องว่างรอบตัวดำเนินการเลขคณิต:

    แนะนำ: x = x * 2 - 1

    ฉันทำสิ่งนี้ต่อไป: x= x * 2 - 1

    ทำไม? Gries 'The Science of Programming แนะนำว่านี่เป็นวิธีที่เน้นความเชื่อมโยงระหว่างการมอบหมายงานกับตัวแปรที่สถานะกำลังเปลี่ยนแปลง

    มันใช้ไม่ได้ดีกับการมอบหมายงานหลาย ๆ งานหรืองานเสริมเพราะฉันใช้ช่องว่างมากมาย

  • สำหรับชื่อฟังก์ชันชื่อวิธีการและชื่อตัวแปรอินสแตนซ์

    แนะนำ: ตัวพิมพ์เล็กโดยมีคำคั่นด้วยเครื่องหมายขีดล่างตามความจำเป็นเพื่อปรับปรุงความสามารถในการอ่าน

    ฉันทำสิ่งนี้ต่อไป: camelCase

    ทำไม? กว่า 20 ปีที่มีนิสัยที่ฝังแน่นของอูฐเคสเริ่มจาก Pascal ในยุค 80


1
นั่นคือเนื้อหาที่ยอดเยี่ยม! codingstyleguide.comหรือcodereview.stackexchange.comจะเป็นสถานที่ที่ดีที่จะมีแนวทางที่ดีนี้
Pompeyo

5

PEP 8 ดีสิ่งเดียวที่ฉันหวังว่ามันจะยากขึ้นคือสงครามศักดิ์สิทธิ์ Tabs-vs-Spaces

โดยทั่วไปหากคุณกำลังเริ่มโปรเจ็กต์ด้วย python คุณต้องเลือก Tabs หรือ Spaces จากนั้นจึงยิงผู้กระทำผิดทั้งหมดต่อหน้า


4
แท็บหรือช่องว่าง? จาก PEP8: Spaces เป็นวิธีการเยื้องที่ต้องการ ควรใช้แท็บเพื่อให้สอดคล้องกับโค้ดที่เยื้องกับแท็บอยู่แล้ว
The Demz

//, PEP8 ค่อนข้างชัดเจนว่าช่องว่างเป็นวิธีการเยื้องที่ต้องการ Ryan downvoted จะอัปเดตคำตอบหรือไม่
Nathan Basanese

5

หากต้องการเพิ่มในรายการคู่มือสำนวนของbhadra :

ชำระเงินการนำเสนอของ Anthony Baxter เกี่ยวกับการเขียนโปรแกรม Python ที่มีประสิทธิภาพ (จาก OSON 2005)

ข้อความที่ตัดตอนมา:

# dict's setdefault method turns this:
if key in dictobj:
    dictobj[key].append(val)
else:
    dictobj[key] = [val]
# into this:
dictobj.setdefault(key,[]).append(val)

4

ฉันปฏิบัติตามอย่างเข้มงวดมาก พระเจ้าองค์เดียวก่อน PEP-8 คือฐานรหัสที่มีอยู่


1
และฉันจะทราบว่า PEP-8 ยังคำนึงถึงฐานรหัสที่มีอยู่ด้วย
John Mulder

2

ใช่ฉันพยายามติดตามอย่างใกล้ชิดที่สุด

ฉันไม่ปฏิบัติตามมาตรฐานการเข้ารหัสอื่น ๆ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.