python中傳值和傳地址問題


在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

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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM