ใน 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