欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python傳值函數(shù)嗎 python 類(lèi)之間傳值

Python 函數(shù)中,參數(shù)是傳值,還是傳引用

這個(gè)問(wèn)題的答案無(wú)外乎這幾種說(shuō)法:傳值,傳引用,對(duì)于可變對(duì)象是傳引用,不可變對(duì)象是傳值。

10余年的藍(lán)山網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整藍(lán)山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“藍(lán)山網(wǎng)站設(shè)計(jì)”,“藍(lán)山網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

傳引用

先看下面這個(gè)例子:

def foo(n):

... print id(n)

... n = 3

... print id(n)

n = 2

id(n)

31030000L

foo(n)

31030000L

31029976L

n

2

id(n)

31030000L

由foo中兩次輸出不相等可以看出,傳引用說(shuō)法并不成立。

傳值

來(lái)看下面的例子:

def foo(n):

... print n

... n.append(3)

... print n

n = [1, 2, 4, 8]

foo(n)

[1, 2, 4, 8]

[1, 2, 4, 8, 3]

n

[1, 2, 4, 8, 3]

按傳值的說(shuō)法,一個(gè)值傳進(jìn)來(lái),在函數(shù)內(nèi)改動(dòng)并不會(huì)影響變量本身的值,上面例子中n變量本身的值也被改變了,說(shuō)明傳值的說(shuō)法也不對(duì)。

3.可變對(duì)象傳引用,不可變對(duì)象傳值

相比上面兩種說(shuō)法,這種說(shuō)法似乎更靠譜,傳播也更為廣泛,那它到底對(duì)不對(duì)呢?

def foo(n):

... print id(n)

... n = ['1', '2', '3']

... print id(n)

... print n

n = [1,2,3,4,5,6]

id(n)

35637576

foo(n)

35637576

35916168

['1', '2', '3']

n

[1, 2, 3, 4, 5, 6]

按照可變對(duì)象傳引用的說(shuō)法,上面list類(lèi)型是可變對(duì)象,應(yīng)該傳引用,這foo方法中兩次調(diào)用id應(yīng)該輸出一樣的值,更改的結(jié)果也應(yīng)該影響到外部變量,但結(jié)果顯然不是這樣的,這說(shuō)明,這種說(shuō)法也是不正確的。

那么Python傳值的方法到底是什么樣呢?其實(shí)Python中的函數(shù)參數(shù)所遵循的是傳對(duì)象(call by object),或者叫做穿對(duì)象的引用(call by object reference)。在調(diào)用函數(shù)時(shí),將變量整個(gè)對(duì)象傳入,對(duì)于可變對(duì)象的修改,在函數(shù)內(nèi)外均可見(jiàn);而對(duì)于不可變對(duì)象,因?yàn)槠洳⒉荒苷嬲饬x上被賦值,修改是通過(guò)生成新的對(duì)象來(lái)實(shí)現(xiàn)的。

下面來(lái)一個(gè)有趣的例子作為結(jié)尾:

def bar(a = []):

... print id(a)

... a.append(7)

... print a

for _ in range(5):

... bar()

#結(jié)果輸出請(qǐng)自己動(dòng)手實(shí)踐,原因應(yīng)該不難理解

python函數(shù)的參數(shù)傳遞是傳值還是傳引用

那要看數(shù)據(jù)類(lèi)型了,int,float,str這種就是傳值,list,dict,類(lèi)的實(shí)例,自定義對(duì)象都是穿引用。

下面是示例代碼:

def?change(int1,float1,str1,dict1,obj1,list1):

int1+=1

float1+=1

str1+='changed'

dict1['none_exist_key']='none_exist_value'

obj1=None

list1.append('change')

class?obj:

pass

int1=0

float1=0.0

str1='origin'

dict1={'key':'value'}

obj1=obj()

list1=['only_element']

print(int1)

print(float1)

print(str1)

print(dict1)

print(obj1)

print(list1)

change(int1,float1,str1,dict1,obj1,list1)

print('after?change')

print(int1)

print(float1)

print(str1)

print(dict1)

print(obj1)

print(list1)

不明白可追問(wèn)

python中視圖函數(shù)傳值的數(shù)據(jù)類(lèi)型可以傳對(duì)象嗎

python的一切數(shù)據(jù)類(lèi)型都是對(duì)象。但是python的對(duì)象分為不可變對(duì)象和可變對(duì)象。python的變量是引用,對(duì)python變量的賦值是引用去綁定該對(duì)象。

可變對(duì)象的數(shù)據(jù)發(fā)生改變,例如列表和字典,引用不會(huì)更改綁定對(duì)象,畢竟本身就是用于增刪改查的,頻繁地產(chǎn)生新對(duì)象必然導(dǎo)致開(kāi)銷(xiāo)巨大,只需要該對(duì)象內(nèi)部變化就行;但對(duì)于綁定了不可變對(duì)象的引用,對(duì)象一旦改變就會(huì)使引用綁定新的對(duì)象。

這一點(diǎn)也會(huì)反應(yīng)到函數(shù)的參數(shù)上。python的傳值方式是“傳對(duì)象”引用。python的函數(shù),形參實(shí)際上是引用,實(shí)參便是對(duì)象綁定到該引用上。本質(zhì)是形參會(huì)被作為函數(shù)的局部變量,在開(kāi)辟的函數(shù)的棧內(nèi)存中被聲明。

簡(jiǎn)要來(lái)講:

如果參數(shù)是數(shù),則類(lèi)似值傳遞,

如果參數(shù)是列表和字典,則類(lèi)似引用傳遞。

每個(gè)對(duì)象都會(huì)有個(gè)id, 可以用id()驗(yàn)證以上說(shuō)法:

這個(gè)函數(shù)的參數(shù)是列表,是可變對(duì)象。

Python 的函數(shù)是怎么傳遞參數(shù)的

首先你要明白,Python的函數(shù)傳遞方式是賦值,而賦值是通過(guò)建立變量與對(duì)象的關(guān)聯(lián)實(shí)現(xiàn)的。

對(duì)于你的代碼:

執(zhí)行 d = 2時(shí),你在__main__里創(chuàng)建了d,并讓它指向2這個(gè)整型對(duì)象。

執(zhí)行函數(shù)add(d)過(guò)程中:

d被傳遞給add()函數(shù)后,在函數(shù)內(nèi)部,num也指向了__main__中的2

但執(zhí)行num = num + 10之后,新建了對(duì)象12,并讓num指向了這個(gè)新對(duì)象——12。

如果你明白函數(shù)中的局部變量與__main__中變量的區(qū)別,那么很顯然,在__main__中,d仍在指著2這個(gè)對(duì)象,它沒(méi)有改變。因此,你打印d時(shí)得到了2。

如果你想讓輸出為12,最簡(jiǎn)潔的辦法是:

在函數(shù)add()里增加return num

調(diào)用函數(shù)時(shí)使用d = add(d)

代碼如下:

def add(num):

num += 10

return num

d = 2

d = add(d)

print d

新聞標(biāo)題:python傳值函數(shù)嗎 python 類(lèi)之間傳值
網(wǎng)站URL:http://chinadenli.net/article14/doohsge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站微信小程序做網(wǎng)站網(wǎng)站建設(shè)移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化