欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python函數(shù)參數(shù)定義及傳遞方式解析

 更新時間:2020年06月10日 15:56:37   作者:路癡隊(duì)長  
這篇文章主要介紹了Python函數(shù)參數(shù)定義及傳遞方式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

python中函數(shù)定義參數(shù)有四種形式:

def fun1(a,b,c):
  pass
def fun2(a=1,b=2,c=3):
  pass
def fun3(*args):
  pass
def fun4(**kargs):
  pass

四種中最常見是前兩種,基本上一般點(diǎn)的教程都會涉及,后兩種一般很少單獨(dú)出現(xiàn),常用在混合模式中

第一種 fun1(a,b,c)是直接將實(shí)參賦予形參,根據(jù)位置做匹配,即嚴(yán)格要求實(shí)參的數(shù)量與行參的數(shù)量位置相等,比較一般,大多數(shù)語言常用這種方式。

第二種 fun2(a=1,b=2,c=3)根據(jù)鍵值對的形式做實(shí)參與形參的匹配,通過這種式就可以忽略了參數(shù)的位置關(guān)系,直接根據(jù)關(guān)鍵字來進(jìn)行賦值,同時該種傳參方式還有個好處就是可以在調(diào)用函數(shù)的時候作為個別選填項(xiàng),不要求數(shù)量上的相等,即可以fun5(3,4)來調(diào)用fun2函數(shù),這里關(guān)鍵就是前面的3,4覆蓋了原來a、b兩個形參的值,但c還是不變采用原來的默認(rèn)值3,這種模式相較第一種更加靈活,不僅可以通過fun6(c=5,a=2,b=7)來打亂行參的位置,而且可以在沒有對應(yīng)形參傳遞的時候使用定義函數(shù)時的默認(rèn)值。

第三種 fun3(*args) ,這定義方式在傳參時是可以傳入任意個參數(shù),這些若干參數(shù)都被放到了tuple元組中賦值給行參args,之后要在函數(shù)中使用這些行參,直接操作args這個tuple元組就可以了,這樣的好處是在參數(shù)的數(shù)量上沒有了限制,但是因?yàn)槭莟uple,其本身還是有次序的,這就仍然存在一定的束縛,在對參數(shù)操作上也會有一些不便

第四種 fun4(**kargs)最為靈活,其是以鍵值對字典的形式向函數(shù)傳參,含有第二種位置的靈活的同時具有第三種方式的數(shù)量上的無限制。此外第三四種函數(shù)聲明的方式前的'*',與c里面的指針聲明一樣,這里僅做聲明標(biāo)識之用

最后要強(qiáng)調(diào)的是四種定義和傳遞方式混合使用(大多數(shù)情況是這種),fun7(a,b,c,**d),但四種方式混用時要遵守:定義和傳遞時,*kargs必須在*args之后

混合使用時的賦值過程為:

1、先根據(jù)前兩種形式定義的函數(shù),按順序把實(shí)參賦值給對應(yīng)的形參;

2、將多余出非鍵值對實(shí)參打包組成一個tuple傳遞給*args;

3、將多余的key=value形式的實(shí)參打包正一個dicrionary傳遞給**kargs

舉例

def test(x,y=5,*a,**b):
  print x,y,a,b
#調(diào)用結(jié)果:
test(1) ===> 1 5 () {}
test(1,2) ===> 1 2 () {}
test(1,2,3) ===> 1 2 (3,) {}
test(1,2,3,4) ===> 1 2 (3,4)
test(x=1) ===> 1 5 () {}
test(x=1,y=1) ===> 1 1 () {}
test(x=1,y=1,a=1) ===> 1 1 () {'a':1} 
test(x=1,y=1,a=1,b=1) ===> 1 1 () {'a':1,'b':1}
test(1,y=1) ===> 1 1 () {}
test(1,2,y=1) ===> 出錯,說y給賦了多個值
test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1}
test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4) {'k':1,'t':2,'o':3}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中的pass語句使用方法講解

    Python中的pass語句使用方法講解

    這篇文章主要介紹了Python中的pass語句使用方法講解,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • Python編程根據(jù)字典列表相同鍵的值進(jìn)行合并

    Python編程根據(jù)字典列表相同鍵的值進(jìn)行合并

    這篇文章主要介紹了來學(xué)習(xí)Python字典列表根據(jù)相同鍵的值進(jìn)行合并的操作方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • python3實(shí)現(xiàn)域名查詢和whois查詢功能

    python3實(shí)現(xiàn)域名查詢和whois查詢功能

    本篇文章給大家分享了python3實(shí)現(xiàn)域名查詢和whois查詢功能的詳細(xì)代碼,有需要的朋友參考學(xué)習(xí)下。
    2018-06-06
  • Python使用tkinter制作在線翻譯軟件

    Python使用tkinter制作在線翻譯軟件

    這篇文章主要為大家詳細(xì)介紹了Python使用tkinter制作在線翻譯軟件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Django之無名分組和有名分組的實(shí)現(xiàn)

    Django之無名分組和有名分組的實(shí)現(xiàn)

    這篇文章主要介紹了Django之無名分組和有名分組,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Python中Selenium上傳文件的幾種方式

    Python中Selenium上傳文件的幾種方式

    本文主要介紹了Python中Selenium上傳文件的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 使用Python批量下載ts格式視頻

    使用Python批量下載ts格式視頻

    這篇文章主要介紹了使用Python批量下載ts格式視頻的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Python實(shí)現(xiàn)自動添加腳本頭信息的示例代碼

    Python實(shí)現(xiàn)自動添加腳本頭信息的示例代碼

    這篇文章給大家介紹的一段腳本是自動添加注釋信息的腳本,添加的信息包括腳本名稱、作者和時間等之類的,對于團(tuán)隊(duì)形成統(tǒng)一的編碼規(guī)則很有幫助。有需要的可以參考借鑒。
    2016-09-09
  • python3使用scrapy生成csv文件代碼示例

    python3使用scrapy生成csv文件代碼示例

    這篇文章主要介紹了python3使用scrapy生成csv文件代碼示例,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • 有趣的python小程序分享

    有趣的python小程序分享

    這篇文章主要介紹了有趣的python小程序分享,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12

最新評論