python中傳值和傳地址問題

梓鵬發表於2018-11-21

在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

通過結果觀察:
對於簡單的數值,採用的是傳值操作,即在函式內對引數的操作不影響外面的變數
對於複雜的變數,採用傳地址操作,此時函式內的引數和外部變數是同一份內容,任何地方對此內容的更改都會影響另外的變數或引數的使用
小夥伴們,注意啦!


相關文章