在python中,還沒有對這個知識點有一個詳細的定義,很模糊的說明了,通過下面程式碼,可以觀察出來,什麼時候傳的是值,什麼時候傳的是地址
有時候會發現自己的資料發生變化,可能就是這個原因,python的創作者,在定義的時候,並沒有像java/c++深挖,比較模糊的說明了,這樣一個關於值和地址的問題,也有我的知識不夠寬廣,沒有涉及到這方面知識,如有偏差,敬請指正!
# 傳值和傳地址的區別 # 對於簡單的數值,採用傳值操作,即在函式內對引數的操作不影響外面的變數 # 對於複雜變數,採用傳地址操作,此時函式內的引數和外部變數是同一份內容, # 任何地方對此內容的更改都影響另外的變數或引數的使用 def a(n): n[2] = 300 print(n) return None def b(n): n += 100 print(n) return None an = [1,5,6,5,7,9] bn = 5 print(an) a(an) print(an) print(bn) b(bn) print(bn)
結果:
[1, 5, 6, 5, 7, 9]
[1, 5, 300, 5, 7, 9]
[1, 5, 300, 5, 7, 9]
5
105
5
通過結果觀察:
對於簡單的數值,採用的是傳值操作,即在函式內對引數的操作不影響外面的變數
對於複雜的變數,採用傳地址操作,此時函式內的引數和外部變數是同一份內容,任何地方對此內容的更改都會影響另外的變數或引數的使用
小夥伴們,注意啦!