Python ไม่มี Unary Increment/Decrement Operators (++, --) เช่นใน C/C++/Java
วิธีที่ถูกต้องใน Python
# Increment a += 1 # Decrement a -= 1
ตัวอย่าง
>>> a = 0 >>> a += 1 >>> a 1 >>> a -= 1 >>> a 0
ทำไม Python ไม่มี ++/-- ?
Python Design Philosophy: "There should be one-- and preferably only one --obvious way to do it" (ควรมีวิธีที่ชัดเจนเพียงหนึ่งทาง) a += 1 ชัดเจนและอ่านง่ายกว่า a++
ความสำคัญ: Python Integers เป็น Immutable
ใน Python ตัวเลข (int) เป็น Immutable Objects การทำ a += 1 ไม่ได้ "เพิ่มค่า" ของ Object เดิม แต่สร้าง Object ใหม่และ Rebind Variable a ไปชี้ Object ใหม่
>>> a = 1 >>> id(a) 140712345678912 >>> a += 1 >>> id(a) 140712345678944 # ID เปลี่ยน! Object ใหม่
ผลกระทบต่อ Variable Aliasing
>>> a = b = c = 1 >>> id(a), id(b), id(c) # ทั้ง 3 ชี้ Object เดียวกัน (140712345678912, 140712345678912, 140712345678912) >>> a += 1 >>> id(a), id(b), id(c) (140712345678944, 140712345678912, 140712345678912) # a ชี้ Object ใหม่, b และ c ยังชี้ Object เก่า
เรื่อง ++/-- ใน Python
Python มี ++ และ -- แต่เป็น Unary Plus/Minus ไม่ใช่ Increment/Decrement
>>> a = 1 >>> ++a 1 >>> --a 1 >>> ---a -1 >>> ++++a 1
++a ถูก Parse เป็น +(+a) (Unary Plus สองครั้ง) ไม่ได้เพิ่มค่า a
สรุป
| Operation | Python Syntax | C/Java Syntax |
|---|---|---|
| Increment | a += 1 หรือ a = a + 1 | a++ หรือ ++a |
| Decrement | a -= 1 หรือ a = a - 1 | a-- หรือ --a |
Best Practice: ใช้ a += 1 และ a -= 1 เสมอใน Python