亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

vibiu / 514人閱讀

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

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

參數(shù)的傳遞

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

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

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

>>> def foo(p1,p2,p3):
...     print "p1==>",p1
...     print "p2==>",p2
...     print "p3==>",p3
... 
>>> foo("python",1,["qiwsir","github","io"])    #一一對應(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)    #注意看報錯信息

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

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

還是上面那個函數(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è)置了兩個參數(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)值,必須要賦值的,否則報錯
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes at least 1 argument (1 given)
def foo(*args)

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

>>> def foo(*args):         #接收不確定個數(shù)的數(shù)據(jù)對象
...     print args
... 
>>> foo("qiwsir.github.io") #以tuple形式接收到,哪怕是一個
("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ù)對象
...     print args
... 

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

>>> foo(a=1,b=2,c=3)    #這樣就可以了,因為有了鍵值對
{"a": 1, "c": 3, "b": 2}

下面來一個綜合的,看看以上四種參數(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/45301.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    Fundebug 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<