免费可以看的无遮挡av无码|国产在线拍揄自揄视频网站|在线无码精品视频播放在|欧美亚洲国产成人精品,国产成人久久77777精品,亚洲欧美视频在线观看,色偷偷色噜噜狠狠网站久久

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 深入理解python函數(shù)傳參機制

深入理解python函數(shù)傳參機制

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-11-06 03:03:51 1699211031

首先需要申明的一點是,python里是沒有像C和C++里那樣按值傳參的說法的。python中的所有東西都是對象,這也是它的強大之處,它沒有基本類型之說。

在python中,類型屬于對象,變量是沒有類型的,這正是python的語言特性,也是吸引著很多pythoner的一點。所有的變量都可以理解是內(nèi)存中一個對象的“引用”,或者,也可以看似c中void*的感覺。所以,希望大家在看到一個python變量的時候,把變量和真正的內(nèi)存對象分開。

類型是屬于對象的,而不是變量。這樣,很多問題就容易思考了。

python中的對象可分為一兩大類,即可改變的(mutable)和不可改變的(immutale).

而屬于immutable類的對象主要有strings,tuples,numbers,而列表,字典等其它對象則屬于mutale類的對象。

由于python中所有東西都是對象,因此python中的函數(shù)傳參方式都是按引用傳參的(可以理解為傳的是指針),具體細(xì)節(jié)的話,我想就不需要我來說了,相信大家都已經(jīng)很熟悉按引用傳參的方式方法了。

補充:我剛才又仔細(xì)看了下上面的內(nèi)容,可能光憑下面一個案例,一些新手可能還不太明白,因此我在這再做兩點個人的總結(jié)。

由于函數(shù)都是按引用傳的,那就出現(xiàn)了一種可能,假如我傳一個參數(shù)arg進去,但我不希望該參數(shù)arg在函數(shù)內(nèi)修改后而影響到函數(shù)外的變量arg,如果要達(dá)到這種效果是不是有點想其它語言里的傳變量復(fù)本,對不對?但是在python里沒有復(fù)本一說,但是它給出了一類對象(immutable不可改變對象,個人估計,這類對象很可能就是因為這樣的原因而被創(chuàng)造出來的,呵呵)。那現(xiàn)在我們假設(shè)傳入一個immutable變量對象imvar到函數(shù)內(nèi),并在函數(shù)內(nèi)對imvar進行修改操作,由于imvar是不可改變對象,所以在對其進行修改時,編譯器會首先為其創(chuàng)建一個復(fù)制對象copy_imvar再對之進行修改,所以函數(shù)中修改的實際上不是最初的對象imvar了,因此它的值仍是進入函數(shù)處理前的值。相反地如果傳是可變類型變量的話,那則是直接在引用上修改,因此在函數(shù)內(nèi)外操作的都是同一對象,因此函數(shù)內(nèi)的操作會直接影響到函數(shù)外的相同變量的值。不知道現(xiàn)在是否好理解些,如果還不是很明白,結(jié)合下面的例子看看應(yīng)該會明白了吧。

下面直接給出一個測試案例:

#test

num=10

string='test'

tupleset=(1,2,3)

listset=[9,8,7]

defchange(num,string,tupleset,listset):

num+=1

string+='intonewwords!'

#tupleset.add(12)error

tupleset=(12,3,4,4)

listset.append(10000)

change(num,string,tupleset,listset)

printnum,string,tupleset,listset

------------------------------------------------

ans:10test(1,2,3)[9,8,7,10000]

看到結(jié)果是不是python中的對象和引用有了更深一步的了解了呢?

以上內(nèi)容為大家介紹了深入理解python函數(shù)傳參機制,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。http://www.em-kal.com/


聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Python 定時修改數(shù)據(jù)庫

當(dāng)需要定時修改數(shù)據(jù)庫時,一般我們都選擇起一個定時進程去改庫。如果將這種定時任務(wù)寫入業(yè)務(wù)中,寫成一個接口呢,定時進程顯得有些不太合適?如...詳情>>

2023-11-06 06:03:51
Python有哪些常用函數(shù)?

Python常用函數(shù)有哪些?我想大家都比較好奇這個問題,今天小編特地整理了一篇有關(guān)Python常用函數(shù)的相關(guān)內(nèi)容,接下來我們一起來看看具體的內(nèi)容介...詳情>>

2023-11-06 05:49:27
Python常用的三大開源框架

眾所周知,Python是一種腳本語言,具有易學(xué)、語法清晰、易維護等優(yōu)點,而且具有豐富和強大的庫,被稱作為膠水語言。Python語言誕生較早,經(jīng)過多...詳情>>

2023-11-06 05:35:03
Python算法是什么?有哪幾類?

了解Python的人應(yīng)該都聽說過Python算法,但是它們的類型和定義并不是很清楚,那么你知道什么是算法嗎?Python算法有哪些類型?讓我們通過這篇文章...詳情>>

2023-11-06 05:31:27
Python數(shù)據(jù)分析有哪些重要的庫?

眾所周知,有很多編程語言都可以應(yīng)用于數(shù)據(jù)分析領(lǐng)域,但Python是目前應(yīng)用最為廣泛的一種編程語言,因為它有很多優(yōu)秀的第三方庫。Python數(shù)據(jù)分析...詳情>>

2023-11-06 05:24:15