在python中,還沒有對這個知識點(diǎn)有一個詳細(xì)的定義,很模糊的說明了,通過下面代碼,可以觀察出來,什么時候傳的是值,什么時候傳的是地址
有時候會發(fā)現(xiàn)自己的數(shù)據(jù)發(fā)生變化,可能就是這個原因,python的創(chuàng)作者,在定義的時候,并沒有像java/c++深挖,比較模糊的說明了,這樣一個關(guān)于值和地址的問題,也有我的知識不夠?qū)拸V,沒有涉及到這方面知識,如有偏差,敬請指正!
# 傳值和傳地址的區(qū)別
# 對于簡單的數(shù)值,采用傳值操作,即在函數(shù)內(nèi)對參數(shù)的操作不影響外面的變量
# 對于復(fù)雜變量,采用傳地址操作,此時函數(shù)內(nèi)的參數(shù)和外部變量是同一份內(nèi)容,
# 任何地方對此內(nèi)容的更改都影響另外的變量或參數(shù)的使用
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)
結(jié)果:
[1, 5, 6, 5, 7, 9]
[1, 5, 300, 5, 7, 9]
[1, 5, 300, 5, 7, 9]
5
105
5
通過結(jié)果觀察:
對于簡單的數(shù)值,采用的是傳值操作,即在函數(shù)內(nèi)對參數(shù)的操作不影響外面的變量
對于復(fù)雜的變量,采用傳地址操作,此時函數(shù)內(nèi)的參數(shù)和外部變量是同一份內(nèi)容,任何地方對此內(nèi)容的更改都會影響另外的變量或參數(shù)的使用
小伙伴們,注意啦!
轉(zhuǎn)載于:https://www.cnblogs.com/cswzp/p/9995945.html