Update a List which is in a Tuple
Hôm nay em có một thứ muốn chia sẻ với các bạn Python
Hãy thử dự đoán kết quả của đoạn code sau đây. (Dự đoán chứ không phải vác console lên test)
>>> t = (1, 2, [3, 4])
>>> t[2] += [50, 60]
A. t = (1, 2, [3, 4, 50, 60])
B. TypeError: 'tuple' object does not support item assignment
C. A, B, D sai hết mình tao đúng
D. A và B đúng
Kết quả là D.
Phần giải thích của tác giả
>>> dis.dis('s[a] += b')
1. Đưa s[a]
lên TOS (Top Of Stack).
2. Gán TOS += b
nếu TOS có thể thay đổi được (Ví dụ là list nên bước này pass)
3. Gán lại s[a] = TOS
nếu TOS có thể thay đổi được. (Vì là tuple nên sẽ có lỗi)
Sau khi biết điều trên em đã rút ra một kinh nghiệm đó là Muốn nàng yêu ta, không nhất thiết ta phải thay đổi trái tim của nàng
Hay đó!
Nên cho phần từ kết quả đến giải thích cho vào summary, kiểu như
Kết quả
[spoiler]chả có gì cả ahihi, làm tí mờ cho vui[/spoiler]
Định chia sẻ thêm vài cái nữa
Là sao nhỉ, tức là 2 dòng code này có thể ra 2 kết quả á ??
có thể nói đơn giản là công việc đó nó chia làm 3 giai đoạn. Thì 2 giai đoạn đầu nó làm thành công, còn giai đoạn 3 thì bị lỗi. Vì Python là thông dịch mà.
Thế A cũng đúng à. M chạy thấy ra B
nhưng nó đã bị thay đổi nó giống như
thì
ch
vẫn nhận giá trị “G” màTưởng là tính chất 1 đoạn code ra 2 kết quả (undefined behavior) như C thì vỡ mặt , chứ thế này thì ok