很多關於python pass-by-object-reference的文章已經寫了。但是閱讀像this或this這樣的線程會令人困惑。傳遞對象引用和可變性
在那些線程中,有人說可變性很重要,而另一些人則說可變或不可變對象的處理方式是一樣的。
我有一個簡單的問題,爲什麼a
的內容沒有在第一段代碼中修改並在第二段中修改?根據傳遞對象引用的this explanation,不應該在兩種情況下都修改引用的內容?
def fn(b):
b += 1
a = 2
fn(a)
print(a)
def fn(b):
b += [4]
a = [2]
fn(a)
print(a)
您鏈接到的包含大量信息的帖子(不是線索; SO不是論壇)。請閱讀可用的答案,而不是要求我們重印它們。 – TigerhawkT3
從技術上講,Python使用「[通過共享呼叫](https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing)」,這是一個晦澀的術語。另外,你的困惑確實源於對Python變量的根本誤解。 Python中的變量就像我們放置在對象上的名稱標籤。當我們將一個參數傳遞給一個函數時,我們將該參數給出的名稱標記放在該對象上。 –