Trong python a += b không phải lúc nào cũng hoạt động giống như a = a + b, cùng một toán hạng có thể cho kết quả khác nhau trong các điều kiện khác nhau. Nhưng để hiểu tại sao chúng thể hiện các hành vi khác nhau, bạn phải đi sâu vào hoạt động của các biến
Vì vậy, trước tiên, bạn cần biết điều gì xảy ra đằng sau hiện trường.
Tạo biến mới
Python3
________ 81 ________ 82 ________ 83
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 300
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 303
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 306
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 307
đầu ra
id of a : 11094592 Value : 10
Ở đây trong ví dụ trên, giá trị 10 được lưu trữ trong bộ nhớ và tham chiếu của nó được gán cho một.
Sửa đổi biến
Python3
________ 81 ________ 82 ________ 83 ________ 71
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 300
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a: 140266311673864 Value : [0, 1] id of a: 140266311673608 Value : [0, 1, 2, 3] id of a: 140266311673608 Value : [0, 1, 2, 3, 4, 5]7
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 306
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 307
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301____143
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 303
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3045
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 300
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a: 140266311673864 Value : [0, 1] id of a: 140266311673608 Value : [0, 1, 2, 3] id of a: 140266311673608 Value : [0, 1, 2, 3, 4, 5]7
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 306
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 307
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3043____82
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 303
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3045
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 300
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a: 140266311673864 Value : [0, 1] id of a: 140266311673608 Value : [0, 1, 2, 3] id of a: 140266311673608 Value : [0, 1, 2, 3, 4, 5]7
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 306
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 307
đầu ra.
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 30
Như bất cứ khi nào chúng ta tạo hoặc sửa đổi int, float, char, string, chúng sẽ tạo các đối tượng mới và gán tham chiếu mới được tạo cho các biến tương ứng của chúng
Nhưng hành vi tương tự không được nhìn thấy trong danh sách
Python3
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3020
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3021
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3023
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3025
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305____828
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a: 140266311673864 Value : [0, 1] id of a: 140266311673608 Value : [0, 1, 2, 3] id of a: 140266311673608 Value : [0, 1, 2, 3, 4, 5]7
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3032
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3033
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3043
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3020
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3039
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3041
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3043
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305____828
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a: 140266311673864 Value : [0, 1] id of a: 140266311673608 Value : [0, 1, 2, 3] id of a: 140266311673608 Value : [0, 1, 2, 3, 4, 5]7
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3032
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3033
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3043____82
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3020____856
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3058
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 305____828
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a: 140266311673864 Value : [0, 1] id of a: 140266311673608 Value : [0, 1, 2, 3] id of a: 140266311673608 Value : [0, 1, 2, 3, 4, 5]7
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3032
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3033
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3008
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3009
đầu ra.
id of a: 140266311673864 Value : [0, 1] id of a: 140266311673608 Value : [0, 1, 2, 3] id of a: 140266311673608 Value : [0, 1, 2, 3, 4, 5]
Đến đây bạn có thể thấy lý do tại sao a = a + b đôi khi khác với a += b
Hãy xem xét các ví dụ này để thao tác với danh sách.
Ví dụ 1.
Python3
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3010
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3020
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3058
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3056
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3041
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3039
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3023
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3023
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3010
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3010
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3043
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3020
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3023
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3039
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3041
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3056
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3038
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3040
_______84____042____043
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3044
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3045
đầu ra.
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 304
ví dụ 2
Python3
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3010
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3020
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3058
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3056
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3041
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3039
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3023
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3023
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3010
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3010
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 302
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3010
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3043
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3020
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3023
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3039
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3041
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 301
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3056
id of a : 11094592 Value : 10 id of a : 11094912 Value : 20 id of a : 11095232 Value : 3024