ชื่อที่ถูกต้องและไม่ถูกต้อง และหลักการตั้งชื่อสำหรับตัวระบุ (เช่น ชื่อตัวแปร) ใน Python

ธุรกิจ

ใน Python ตัวระบุ (ชื่อของตัวแปร, ฟังก์ชัน, คลาส ฯลฯ) จะต้องถูกกำหนดตามกฎ ชื่อที่ไม่ปฏิบัติตามกฎไม่สามารถใช้เป็นตัวระบุได้และจะส่งผลให้เกิดข้อผิดพลาด

ข้อมูลต่อไปนี้มีให้ที่นี่

  • อักขระที่สามารถและไม่สามารถใช้เป็นตัวระบุ (ชื่อ)
    • อักขระ ASCII
    • อักขระ Unicode
      • การทำให้เป็นมาตรฐาน (เช่น ในวิชาคณิตศาสตร์)
  • ตรวจสอบว่าสตริงเป็นตัวระบุที่ถูกต้องหรือไม่:isidentifier()
  • คำที่ไม่สามารถใช้เป็นตัวระบุ (ชื่อ) (คำสงวน)
  • คำที่ไม่ควรใช้เป็นตัวระบุ (ชื่อ)
  • หลักการตั้งชื่อสำหรับ PEP8

คำอธิบายต่อไปนี้มีให้ใน Python 3 และอาจแตกต่างกันใน Python 2

อักขระที่สามารถและไม่สามารถใช้เป็นตัวระบุ (ชื่อ)

ระบุอักขระที่ใช้ได้และไม่สามารถใช้เป็นตัวระบุ (ชื่อ)

นอกจากนี้ แม้ว่าจะมีหลายสิ่งที่จะเขียนเกี่ยวกับ แต่โดยพื้นฐานแล้ว ทั้งหมดที่คุณต้องจำไว้มีดังต่อไปนี้

  • ใช้ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ตัวเลข และขีดล่าง
  • อักษรตัวแรก (ตัวแรก) ไม่สามารถเป็นตัวเลขได้

อักขระ ASCII

อักขระ ASCII ที่สามารถใช้เป็นตัวระบุ (ชื่อ) ได้คืออักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก (A~Z,a~z) ตัวเลข (0~9) และขีดล่าง (_) ตัวอักษรเป็นกรณี ๆ ไป

AbcDef_123 = 100
print(AbcDef_123)
# 100

ไม่สามารถใช้สัญลักษณ์อื่นนอกเหนือจากขีดล่างได้

# AbcDef-123 = 100
# SyntaxError: can't assign to operator

นอกจากนี้ ไม่สามารถใช้ตัวเลขขึ้นต้นได้ (อักษรตัวแรก)

# 1_abc = 100
# SyntaxError: invalid token

สามารถใช้ขีดล่างในตอนเริ่มต้นได้เช่นกัน

_abc = 100
print(_abc)
# 100

อย่างไรก็ตาม โปรดทราบว่าขีดล่างในตอนเริ่มต้นอาจมีความหมายพิเศษ

อักขระ Unicode

ตั้งแต่ Python 3 อักขระ Unicode ก็สามารถใช้ได้เช่นกัน

変数1 = 100
print(変数1)
# 100

ไม่สามารถใช้อักขระ Unicode ได้ทั้งหมด และไม่สามารถใช้อักขระบางตัวได้ ทั้งนี้ขึ้นอยู่กับหมวดหมู่ Unicode ตัวอย่างเช่น ไม่สามารถใช้สัญลักษณ์ต่างๆ เช่น เครื่องหมายวรรคตอนและรูปสัญลักษณ์

# 変数。 = 100
# SyntaxError: invalid character in identifier

# ☺ = 100
# SyntaxError: invalid character in identifier

ดูเอกสารอย่างเป็นทางการสำหรับรหัสหมวดหมู่ Unicode ที่สามารถใช้ได้

ในหลายกรณี การใช้ตัวอักษรจีนนั้นไม่มีประโยชน์ ฯลฯ เพียงเพราะสามารถใช้อักขระ Unicode ได้ (โดยไม่มีข้อผิดพลาด)

การทำให้เป็นมาตรฐาน (เช่น ในวิชาคณิตศาสตร์)

อักขระ Unicode จะถูกแปลงเป็นรูปแบบมาตรฐาน NFKC สำหรับการตีความ ตัวอย่างเช่น ตัวอักษรเต็มความกว้างจะถูกแปลงเป็นตัวอักษรครึ่งความกว้าง (อักขระ ASCII)

โปรดทราบว่าแม้ว่าซอร์สโค้ดจะแสดงหน้าจอที่แตกต่างกัน แต่ก็ถือเป็นอ็อบเจ็กต์เดียวกันและจะถูกเขียนทับ

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

ตรวจสอบว่าสตริงเป็นตัวระบุที่ถูกต้องหรือไม่: isidentifier()

สตริงที่ถูกต้องเป็นตัวระบุหรือไม่ สามารถตรวจสอบได้ด้วยวิธีการสตริง isidentifier()

คืนค่าจริงหากถูกต้องเป็นตัวระบุ และเป็นเท็จหากไม่ถูกต้อง

print('AbcDef_123'.isidentifier())
# True

print('AbcDef-123'.isidentifier())
# False

print('変数1'.isidentifier())
# True

print('☺'.isidentifier())
# False

คำที่ไม่สามารถใช้เป็นตัวระบุ (ชื่อ) (คำสงวน)

มีคำบางคำ (คำสงวน) ที่ไม่สามารถใช้เป็นตัวระบุได้ แม้ว่าจะเป็นสตริงที่ถูกต้องเป็นตัวระบุ (ชื่อ)

เนื่องจากคำสงวนเป็นสตริงที่ถูกต้องเป็นตัวระบุ isidentifier() จึงคืนค่าเป็นจริง แต่จะมีข้อผิดพลาดเกิดขึ้นหากใช้เป็นตัวระบุ

print('None'.isidentifier())
# True

# None = 100
# SyntaxError: can't assign to keyword

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

คำที่ไม่ควรใช้เป็นตัวระบุ (ชื่อ)

ชื่อของฟังก์ชันในตัวของ Python สามารถใช้เป็นตัวระบุได้ ดังนั้นคุณจึงสามารถกำหนดค่าใหม่ให้เป็นตัวแปรได้

ตัวอย่างเช่น len() เป็นฟังก์ชันในตัวที่ส่งคืนจำนวนองค์ประกอบในรายการหรือจำนวนอักขระในสตริง

print(len)
# <built-in function len>

print(len('abc'))
# 3

หากคุณกำหนดค่าใหม่ให้กับชื่อนี้ len ฟังก์ชันเดิมจะถูกเขียนทับและไม่สามารถใช้งานได้ โปรดทราบว่าจะไม่มีการพิมพ์ข้อผิดพลาดหรือคำเตือนเมื่อกำหนดค่าใหม่

print(len('abc'))
# 3

len = 100
print(len)
# 100

# print(len('abc'))
# TypeError: 'int' object is not callable

ข้อผิดพลาดทั่วไปอีกประการหนึ่งคือการใช้ list = [0, 1, 2] ซึ่งทำให้ไม่สามารถใช้ list() ได้ ระวัง.

หลักการตั้งชื่อสำหรับ PEP8

PEP ย่อมาจาก Python Enhancement Proposal ซึ่งเป็นเอกสารที่อธิบายคุณลักษณะใหม่และแง่มุมอื่นๆ ของ Python

PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org

PEP8 เป็นอันที่แปดและอธิบายถึง “Style Guide for Python Code” นั่นคือ style guide สำหรับ Python

มีการกล่าวถึงอนุสัญญาการตั้งชื่อด้วย

ดูลิงก์ด้านบนสำหรับรายละเอียดเพิ่มเติม แต่ตัวอย่างเช่น ขอแนะนำให้ใช้รูปแบบการเขียนต่อไปนี้

  • โมดูล
    • lowercase_underscore
    • ตัวพิมพ์เล็ก + ขีดล่าง
  • บรรจุุภัณฑ์
    • lowercase
    • ตัวพิมพ์เล็กทั้งหมด
  • คลาส ข้อยกเว้น
    • CapitalizedWords(CamelCase)
    • ใช้อักษรตัวแรกของคำเป็นตัวพิมพ์ใหญ่ ไม่มีขีดล่าง
  • ฟังก์ชัน ตัวแปร และวิธีการ
    • lowercase_underscore
    • ตัวพิมพ์เล็ก + ขีดล่าง
  • คงที่
    • ALL_CAPS
    • ตัวพิมพ์ใหญ่ + ขีดล่าง

อย่างไรก็ตาม หากองค์กรของคุณไม่มีแบบแผนการตั้งชื่อของตนเอง ขอแนะนำให้ปฏิบัติตาม PEP8