Python ไม่มีตัวดำเนินการเพิ่ม/ลดแบบเอกพจน์ ( ++/--) แทนที่จะเพิ่มมูลค่าให้ใช้
a += 1
เพื่อลดค่า ใช้−
a -= 1
ตัวอย่าง
>>> a = 0 >>> >>> #Increment >>> a +=1 >>> >>> #Decrement >>> a -= 1 >>> >>> #value of a >>> a 0
Python ไม่ได้มีหลายวิธีในการทำสิ่งเดียวกัน
อย่างไรก็ตาม ระวังถ้าคุณมาจากภาษาเช่น C Python ไม่มี "ตัวแปร" ในแง่ที่ C มี แต่ python จะใช้ชื่อและอ็อบเจกต์แทน และในจำนวนเต็มของงูหลาม (int's) จะไม่เปลี่ยนรูป
มาทำความเข้าใจกับตัวอย่างกัน-
>>> a =1 >>> print(id(a)) 1919375088 >>> print(hex(id(a))) 0x726756f0
ดังนั้นความหมายของคำสั่งข้างต้นในไพ ธ อนคือ:สร้างวัตถุประเภท int มีค่า 1 และตั้งชื่อ a ให้กับมัน วัตถุเป็นตัวอย่างของ int ที่มีค่า 1 และชื่อ a หมายถึงมัน ชื่อที่กำหนด a และวัตถุที่อ้างถึงนั้นแตกต่างกัน
ตอนนี้ให้เพิ่ม
>>> a +=1 >>> print(id(a)) 1919375104 >>> print(hex(id(a))) 0x72675700
เนื่องจาก int นั้นไม่สามารถเปลี่ยนรูปได้ python จึงเข้าใจคำสั่งด้านบนว่า
-
ค้นหาวัตถุที่อ้างถึง (เป็น int และ id 0x726756f0)
-
ค้นหาค่าของวัตถุ 0x726756f0 (คือ 1)
-
เพิ่ม 1 ให้กับค่านั้น (1+1 =2)
-
สร้างวัตถุ int ใหม่ด้วยค่า 2 (วัตถุที่มีรหัส 0x72675700)
-
เชื่อมชื่อ a กับวัตถุใหม่นี้ (0x726757700)
-
ตอนนี้ a อ้างถึงวัตถุ 0x72675700 และวัตถุก่อนหน้า (0x726756f0) จะไม่ถูกอ้างถึงด้วยชื่อ a อีกต่อไป หากไม่มีชื่ออื่นที่อ้างอิงถึงวัตถุดั้งเดิม จะถูกเก็บขยะในภายหลัง
จากข้างบนนี้ คุณจะเข้าใจเมื่อเราทำ:a +=1
การดำเนินการนี้จะกำหนด a ใหม่ให้กับ a+1 นั่นไม่ใช่ตัวดำเนินการเพิ่ม เพราะมันไม่ได้เพิ่ม a แต่จะกำหนดใหม่
มาทำความเข้าใจการเพิ่มขึ้น/ลดลงด้านบนพร้อมตัวอย่างเพิ่มเติม—
>>> a = b = c =1 >>> id(a) 1919375088 >>> id(b) 1919375088 >>> id(c) 1919375088 >>> #Above all have the same id >>> >>> # Now increment a >>> a +=1 >>> id(a) 1919375104 >>> id(b) 1919375088 >>> id(c) 1919375088
จากด้านบน คุณสามารถเข้าใจได้ว่าเรามีวัตถุเดียวที่ a, b และ c อ้างถึง (an int ที่มี id 1919375088)
ในการเพิ่มค่าของ a ตอนนี้ a ถูกกำหนดให้เป็น a+1 (id:1919375104) และ b และ c อื่น ๆ อ้างถึงวัตถุเดียวกัน (1919375088)
นอกจากนี้ python ยังมาพร้อมกับตัวดำเนินการ ++/--
>>> a =1 >>> ++a 1 >>> --a 1