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

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


ถ้าตัวแปรสองตัวมีชนิดข้อมูลเดียวกันและไม่ใช่ Iterator เช่น List และ Dictionary ฯลฆ นิพจน์ a += b จะเหมือนกับ a = a + b ให้ผลลัพธ์เดียวกัน แต่เมื่อมี Iterator ปรากฏ เราไม่สามารถคาดหวังผลลัพธ์เดียวกันได้เสมอไป ด้านล่างคือหนึ่งในสถานการณ์นั้น

กรณี a = a + b

ที่นี่เราเห็นว่าเมื่อเราใช้งานนิพจน์กับ List และ String คาดหวังว่าจะรวมกัน เราจะได้ Error กลับมา

ตัวอย่าง

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 เราจะเห็นว่า String ถูกแปลงเป็นชุดของ Elements โดยอัตโนมัติ เพื่อเป็นส่วนหนึ่งของ List

ตัวอย่าง

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

ผลลัพธ์

การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ −

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