Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Increment และ Decrement Operators ใน Python (++, --)

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

สรุป

OperationPython SyntaxC/Java Syntax
Incrementa += 1 หรือ a = a + 1a++ หรือ ++a
Decrementa -= 1 หรือ a = a - 1a-- หรือ --a

Best Practice: ใช้ a += 1 และ a -= 1 เสมอใน Python