簡體   English   中英

python元組賦值(如果元組可變)

[英]python tuple assignment if a tuple is mutable

我是python的新手。 據說元組是不變的,但是為什么我們可以做這樣的事情。 即連接並更改原始值

a=(1,2,3)
>>> a
(1, 2, 3)
>>> b=(4,5,6)
>>> b
(4, 5, 6)
>>> a=a+b
>>> a
(1, 2, 3, 4, 5, 6)

在這種情況下,我們不是要更改元組a中的值嗎?

不,您要創建一個新的元組。 考慮。

>>> a = (1, 2, 3)
>>> a1 = a

現在a1a是相同的元組。 不僅看起來相似; 他們是一樣的 然后

>>> b = (4, 5, 6)
>>> a = a + b

現在a(1, 2, 3, 4, 5, 6) 我們是否更改了我們制作的第一個元組? 讓我們問一下Python。

>>> a
(1, 2, 3, 4, 5, 6)
>>> a1
(1, 2, 3)

不,原始元組保持不變。

這種區別很重要。 您創建了一個新的元組,並偶然給它取了相同的名稱。 這意味着,如果你有一個巨大的對象層次寫一個復雜的程序,你只需所做的更改a不會打破任何依賴於以前的值的其他對象或代碼的a 它不僅打破您的特定a你控制的變量。 另一方面,如果我們有一個列表a = [1, 2, 3]並開始追加到列表中,那么碰巧持有對該列表的引用的任何其他對象現在都將看到更改,從而導致混亂遠處的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM