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

ตัวดำเนินการเพิ่มและลดใน Python?


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