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

Python a +=b ไม่ใช่ a =a + b . เสมอไป


หากตัวแปรสองตัวเป็นประเภทข้อมูลเดียวกันและไม่ใช่ตัววนซ้ำ เช่น รายการและพจนานุกรม เป็นต้น ดังนั้นนิพจน์ a +=b จะเหมือนกับ a =+b จะให้ผลลัพธ์เหมือนกัน แต่เมื่อ n iterator เข้ามาเกี่ยวข้อง เราไม่สามารถคาดหวังสิ่งเดียวกันได้เสมอไป ด้านล่างนี้เป็นหนึ่งในสถานการณ์ดังกล่าว

กรณีของ a =a +b

ในที่นี้ เราจะเห็นได้ว่าเมื่อเรานำนิพจน์ไปใช้กับรายการและสตริงที่คาดว่าจะรวมเข้าด้วยกัน เราได้รับข้อผิดพลาดกลับมา

ตัวอย่าง

x ='Hello '
z_list = [1,2,3]
z_list = z_list + x
print(z_list)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Traceback (most recent call last):
   File "C:\Users\Pradeep\AppData\Roaming\JetBrains\PyCharmCE2020.3\scratches\scratch.py", line 11, in
      z_list = z_list + x
TypeError: can only concatenate list (not "str") to list

กรณีของ a +=b

แต่เมื่อเราใช้นิพจน์ a +=b เราจะเห็นว่า sting ถูกแปลงเป็นชุดของ elemnst โดยปริยาย เพื่อให้เป็นส่วนหนึ่งของรายการ

ตัวอย่าง

z_list = [1,2,3]
x ='Hello'
z_list += x
print(z_list)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

[1, 2, 3, 'H', 'e', 'l', 'l', 'o']