国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[零基礎(chǔ)學(xué)python]總結(jié)參數(shù)的傳遞

vibiu / 461人閱讀

摘要:下面總結(jié)通過總結(jié)常見的函數(shù)參數(shù)定義方式,來理解參數(shù)傳遞的流程。這種方式最常見了,列出有限個(gè)數(shù)的參數(shù),并且彼此之間用逗號(hào)隔開。而且,必須數(shù)量一致,一一對(duì)應(yīng)。

就前面所講,函數(shù)的基本內(nèi)容已經(jīng)完畢。但是,函數(shù)還有很多值得不斷玩味的細(xì)節(jié)。這里進(jìn)行闡述。

參數(shù)的傳遞

python中函數(shù)的參數(shù)通過賦值的方式來傳遞引用對(duì)象。下面總結(jié)通過總結(jié)常見的函數(shù)參數(shù)定義方式,來理解參數(shù)傳遞的流程。

def foo(p1,p2,p3,...)

這種方式最常見了,列出有限個(gè)數(shù)的參數(shù),并且彼此之間用逗號(hào)隔開。在調(diào)用函數(shù)的時(shí)候,按照順序以此對(duì)參數(shù)進(jìn)行賦值,特備注意的是,參數(shù)的名字不重要,重要的是位置。而且,必須數(shù)量一致,一一對(duì)應(yīng)。第一個(gè)對(duì)象(可能是數(shù)值、字符串等等)對(duì)應(yīng)第一個(gè)參數(shù),第二個(gè)對(duì)應(yīng)第二個(gè)參數(shù),如此對(duì)應(yīng),不得偏左也不得偏右。

>>> def foo(p1,p2,p3):
...     print "p1==>",p1
...     print "p2==>",p2
...     print "p3==>",p3
... 
>>> foo("python",1,["qiwsir","github","io"])    #一一對(duì)應(yīng)地賦值
p1==> python
p2==> 1
p3==> ["qiwsir", "github", "io"]

>>> foo("python")
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes exactly 3 arguments (1 given)    #注意看報(bào)錯(cuò)信息

>>> foo("python",1,2,3)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes exactly 3 arguments (4 given)    #要求3個(gè)參數(shù),實(shí)際上放置了4個(gè),報(bào)錯(cuò)
def foo(p1=value1,p2=value2,...)

這種方式比前面一種更明確某個(gè)參數(shù)的賦值,貌似這樣就不亂子了,很明確呀。頗有一個(gè)蘿卜對(duì)著一個(gè)坑的意味。

還是上面那個(gè)函數(shù),用下面的方式賦值,就不用擔(dān)心順序問題了。

>>> foo(p3=3,p1=10,p2=222)
p1==> 10
p2==> 222
p3==> 3

也可以采用下面的方式定義參數(shù),給某些參數(shù)有默認(rèn)的值

>>> def foo(p1,p2=22,p3=33):    #設(shè)置了兩個(gè)參數(shù)p2,p3的默認(rèn)值
...     print "p1==>",p1
...     print "p2==>",p2
...     print "p3==>",p3
... 
>>> foo(11)     #p1=11,其它的參數(shù)為默認(rèn)賦值
p1==> 11
p2==> 22
p3==> 33
>>> foo(11,222)     #按照順序,p2=222,p3依舊維持原默認(rèn)值
p1==> 11
p2==> 222
p3==> 33
>>> foo(11,222,333)  #按順序賦值
p1==> 11
p2==> 222
p3==> 333

>>> foo(11,p2=122)
p1==> 11
p2==> 122
p3==> 33

>>> foo(p2=122)     #p1沒有默認(rèn)值,必須要賦值的,否則報(bào)錯(cuò)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes at least 1 argument (1 given)
def foo(*args)

這種方式適合于不確定參數(shù)個(gè)數(shù)的時(shí)候,在參數(shù)args前面加一個(gè)*,注意,僅一個(gè)喲。

>>> def foo(*args):         #接收不確定個(gè)數(shù)的數(shù)據(jù)對(duì)象
...     print args
... 
>>> foo("qiwsir.github.io") #以tuple形式接收到,哪怕是一個(gè)
("qiwsir.github.io",)
>>> foo("qiwsir.github.io","python")
("qiwsir.github.io", "python")

上一講中已經(jīng)有例子說明,可以和前面的混合使用。此處不贅述。

def foo(**args)

這種方式跟上面的區(qū)別在于,必須接收類似arg=val形式的。

>>> def foo(**args):    #這種方式接收,以dictionary的形式接收數(shù)據(jù)對(duì)象
...     print args
... 

>>> foo(1,2,3)          #這樣就報(bào)錯(cuò)了
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes exactly 0 arguments (3 given)

>>> foo(a=1,b=2,c=3)    #這樣就可以了,因?yàn)橛辛随I值對(duì)
{"a": 1, "c": 3, "b": 2}

下面來一個(gè)綜合的,看看以上四種參數(shù)傳遞方法的執(zhí)行順序

>>> def foo(x,y=2,*targs,**dargs):
...     print "x==>",x
...     print "y==>",y
...     print "targs_tuple==>",targs
...     print "dargs_dict==>",dargs
... 

>>> foo("1x")
x==> 1x
y==> 2
targs_tuple==> ()
dargs_dict==> {}

>>> foo("1x","2y")
x==> 1x
y==> 2y
targs_tuple==> ()
dargs_dict==> {}

>>> foo("1x","2y","3t1","3t2")
x==> 1x
y==> 2y
targs_tuple==> ("3t1", "3t2")
dargs_dict==> {}

>>> foo("1x","2y","3t1","3t2",d1="4d1",d2="4d2")
x==> 1x
y==> 2y
targs_tuple==> ("3t1", "3t2")
dargs_dict==> {"d2": "4d2", "d1": "4d1"}

通過上面的例子,看官是否看出什么名堂了呢?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/45301.html

相關(guān)文章

  • [基礎(chǔ)學(xué)python]變量和參數(shù)

    摘要:每個(gè)形參的名稱均可作為過程內(nèi)的局部變量。實(shí)參表示在您調(diào)用過程時(shí)傳遞給過程形參的值??垂偃绻仓^皮看完這段引文,發(fā)現(xiàn)里面有幾個(gè)關(guān)鍵詞參數(shù)變量形參實(shí)參。好似全局變量能力很強(qiáng)悍,能夠統(tǒng)帥函數(shù)內(nèi)外。 對(duì)于變量和參數(shù),不管是已經(jīng)敲代碼多年的老鳥,還是剛剛接觸編程的小白,都會(huì)有時(shí)候清楚,有時(shí)候又有點(diǎn)模糊。因?yàn)?,在?shí)際應(yīng)用中,它們之間分分離離,比如,敲代碼都知道,x=3中x是變量,它不是參數(shù),但是...

    Freelander 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]傳說中函數(shù)編寫條規(guī)

    摘要:關(guān)于函數(shù)的事情,總是說不完的,下面就羅列一些編寫函數(shù)的注意事項(xiàng)。函數(shù)具有獨(dú)立性。也就是常說的不要有太強(qiáng)的耦合性。要讓函數(shù)能夠獨(dú)立于外部的東西。函數(shù)實(shí)現(xiàn)的功能和目標(biāo)要單一化。這跟前面的道理是一樣的,目的是降低耦合性。 關(guān)于函數(shù)的事情,總是說不完的,下面就羅列一些編寫函數(shù)的注意事項(xiàng)。特別聲明,這些事項(xiàng)不是我總結(jié)的,我是從一本名字為《Learning Python》的書里面抄過來的,順便寫成...

    mushang 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]探析get和post方法

    摘要:特別提醒,看官不要自宮,因?yàn)楸窘坛滩皇潜傩皠ψV,也不是葵花寶典,撰寫本課程的人更是生理健全者。直到目前,科學(xué)上尚未有證實(shí)或證偽自宮和寫程序之間是否存在某種因果關(guān)系。和是中用的最多的方法啦。 Do not store up for yourselves treasures on earth, where moth and rust consume and where thieves...

    AaronYuan 評(píng)論0 收藏0
  • python基礎(chǔ)教程:字符串格式化

    摘要:字符串格式化的字符串字面值簡(jiǎn)稱為字符串,是在字符串的開始引號(hào)之前加上一個(gè)或。在這樣的字符串中,我們可以在花括號(hào)中引用變量或表達(dá)式。但在中,更推薦使用方法或字符串格式化。 利用print函數(shù)把信息打印到顯示器,是我們編程中經(jīng)常使用的功能。為了讓打印的信息更容易讀懂,就需要更好的格式來打印。Python提供了記住不同的格式化輸出的方法。推薦的方法就是:f-字符串和str.format()函...

    alin 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]類細(xì)節(jié)

    摘要:在對(duì)象接口后包裝其實(shí)現(xiàn)的細(xì)節(jié),從而隔離了代碼的修改對(duì)用戶產(chǎn)生的影響。類提供了一個(gè)新的本地作用域,最小化了變量名沖突。類其實(shí)并沒有結(jié)束,不過本講座到此對(duì)類暫告一段。 前面對(duì)類的有關(guān)內(nèi)容已經(jīng)描述不少了,其實(shí)話題遠(yuǎn)遠(yuǎn)沒有結(jié)束,不過對(duì)于初學(xué)者,掌握這些已經(jīng)算是入門,在以后的實(shí)踐中,還需要進(jìn)行體會(huì)和感悟。 這幾天和幾個(gè)朋友以各種途徑討論過OOP的相關(guān)問題,他們是:令狐蟲、Frank、晉劍、小馮...

    Fundebug 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<