tôi thấy một số câu hỏi hỏi về TypeError: 'tuple' object does not support item assignment
trên SO, nhưng vẫn còn, tôi đang bối rối về điều này:python tuple, ai đó có thể giải thích hành vi này?
Hãy xem xét đoạn mã:
>>> a = ([],[])
>>> a[0].append(1) # 1
>>> a
([1], [])
>>> a[0] += [2]
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
a[0] += [2]
TypeError: 'tuple' object does not support item assignment # 2
>>> a
([1, 2], []) # 3
>>>
Câu hỏi của tôi là:
- tuples là không thay đổi, nhưng
1
đã thay đổi thành công giá trị của nó.Tại sao? (Tôi biết tôi không thực sự hiểu được tính bất biến của python ..) - Nếu
1
là accepte d, lý do gì khiến số2
tăngTypeError
? - Trong
3
,a
được sửa đổi, sau đó tăng điểm là gìTypeError
?
Cảm ơn bạn
Lần đầu tiên, hãy xem http://docs.python.org/3/reference/datamodel.html#objects-values-and-types - về cơ bản, "bộ dữ liệu không thay đổi" chỉ có nghĩa là "bạn không thể thêm, xóa hoặc thay thế các đối tượng trong một tuple ", không phải" các đối tượng chứa trong một tuple cũng không thay đổi được ". – delnan