Không, kết quả nên 1.
Hãy suy nghĩ về toán tử gán (=
) như sự phân công của một tham chiếu.
a = 1 #a references the integer object 1
b = a #b and a reference the same object
a = 2 #a now references a new object (2)
print b # prints 1 because you changed what a references, not b
toàn khác biệt này thực sự là quan trọng nhất khi giao dịch với mutable các đối tượng như lists
như trái ngược với bất biến đối tượng như int
, float
và tuple
.
Bây giờ xem xét đoạn mã sau:
a=[] #a references a mutable object
b=a #b references the same mutable object
b.append(1) #change b a little bit
print a # [1] -- because a and b still reference the same object
# which was changed via b.
cảm ơn lời giải thích đó. Tôi nghĩ với một = 2, tôi sẽ thay đổi bất cứ điều gì một chỉ là từ 1 đến 2, nhưng từ những gì bạn nói, có vẻ như tôi thay đổi nơi một trỏ đến (đến 2 thay vì 1) – user1266138
@ user1266138 - Có. Đó là một cách thích hợp để nghĩ về nó. (mặc dù trong python chúng ta thường nói "tham chiếu" như trái ngược với "điểm", nhưng đó thực sự chỉ là ngữ nghĩa). – mgilson