- 論壇徽章:
- 0
|
回復(fù) 2# 路人賈
我暫時(shí)的理解如下,還找不到確鑿的資料說明,只是自己試驗(yàn)的結(jié)果,不知道是否正確:
def ChangeInt(a):
a=10
b=2
ChangeInt(b)
print b # ->2
翻譯為非函數(shù)的樣子:
b=2
a=b #a的內(nèi)存地址跟b是一樣的,說明這里是內(nèi)存地址拷貝,因此賦值可以理解為指針指向
a=10 #將a指向了新創(chuàng)建的10對象,a的內(nèi)存地址發(fā)生了改變.
print b
def ChangeList(a):
a[0]=10
b=[2]
ChangeList(b)
print b # ->[10]
翻譯為非函數(shù):
b=[2]
a=b #a的內(nèi)存地址跟b是一樣的,說明這里是內(nèi)存地址拷貝,因此賦值可以理解為指針指向
a[0]=10 #將a指向的列表的第一個(gè)元素值指向內(nèi)存新創(chuàng)建的10對象,a的內(nèi)存地址沒有改變,仍然跟b的內(nèi)存地址一致.
print b
def ChangeList(a):
a=[10]
b=[2]
ChangeList(b)
print b # ->[2]
翻譯為非函數(shù):
b=[2]
a=b #a的內(nèi)存地址跟b是一樣的,說明這里是內(nèi)存地址拷貝,因此賦值可以理解為指針指向
a=[10] #重新創(chuàng)建了一個(gè)新的列表,a指向這個(gè)新列表,a的內(nèi)存地址發(fā)生了改變.
print b
總結(jié)以上3個(gè)例子,可以理解為:
1.python中的賦值"="語句,可以理解為指針的指向.
2.由于指針指向問題,故才衍生出"作用域"的概念,而不是因?yàn)橛凶饔糜虻?quot;人為限制"造成的以上結(jié)果,是吧?!
3.注意區(qū)分可變對象與不可變對象的區(qū)別.list,dict,int,char,tuple...
4.以此也推出了值傳遞與引用傳遞的概念,可以統(tǒng)一理解為python中都是引用傳遞.
|
|