亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2618 | 回復(fù): 3
打印 上一主題 下一主題

關(guān)于值傳遞,引用傳遞,不可變對象,可變對象的疑問 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-12-16 18:41 |只看該作者 |倒序?yàn)g覽

def ChangeInt(a):
    a=10
b=2
ChangeInt(b)
print b # ->2

def ChangeList(a):
    a[0]=10
b=[2]
ChangeList(b)
print b # ->[10]


def ChangeList(a):
    a=[10]
b=[2]
ChangeList(b)
print b # ->[2]

以上拋開基本概念,僅僅從內(nèi)存角度來理解,如何理解呢? 費(fèi)解了兩天了,感覺還是迷糊...
不勝感激...

論壇徽章:
1
天蝎座
日期:2014-11-24 15:57:32
2 [報(bào)告]
發(fā)表于 2014-12-16 21:55 |只看該作者
本帖最后由 路人賈 于 2014-12-16 22:10 編輯

函數(shù)的參數(shù)是通過賦值進(jìn)行對象的傳遞的,函數(shù)能夠改變傳入的可變對象。整數(shù)和字符串屬于不可變對象,列表和字典屬于可變對象

前兩個(gè)應(yīng)該是容易理解的,第三個(gè)的話,在函數(shù)中對a進(jìn)行賦值,并不是對可改變對象進(jìn)行改變,而是創(chuàng)建了新的列表對象,并將新的列表對象賦值給了a,但是由于作用域的關(guān)系,這里的a是一個(gè)新的變量,不同于函數(shù)外面的a,所以函數(shù)返回后,a并沒有改變。
以上是個(gè)人理解,供樓主參考,如有錯誤,歡迎指正

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2014-12-17 10:47 |只看該作者
回復(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中都是引用傳遞.

論壇徽章:
1
天蝎座
日期:2014-11-24 15:57:32
4 [報(bào)告]
發(fā)表于 2014-12-17 11:10 |只看該作者
你可以看看learning python這本書,有中文版的,會對理解這些有很大幫助,我也是剛接觸python,理解不是很透徹,回復(fù) 3# chenxin6676


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP