Python參數(shù)傳遞及收集機(jī)制原理解析
python參數(shù)傳遞時(shí),主要有位置參數(shù)和關(guān)鍵字參數(shù)。
1. 位置參數(shù):顧名思義,參數(shù)的位置順序很重要,因?yàn)槭侵苯痈鶕?jù)位置賦值的。
def func1(a, b): print(a,b) # 位置參數(shù),位置順序很重要 func1(1,2)
2. 關(guān)鍵字參數(shù):首先使得位置不那么重要了,畢竟參數(shù)一多,有些人記不住位置也很正常;其次更重要的是可以提供初始值。
def func2(c=1, d=2): print(c,d) # 關(guān)鍵字參數(shù),1. 使得位置不那么重要;2. 可提供初始值 func2() #使用初始值 func2(100,200) #關(guān)鍵字參數(shù)也可用位置參數(shù)的傳遞形式 func2(c=100,d=200) #變換位置 func2(d=200,c=200)
3. 位置參數(shù)和關(guān)鍵字參數(shù)混合時(shí),位置參數(shù)必須全部在關(guān)鍵字參數(shù)的前面。
def func3(a, b, c=1): print(a,b,c) # 混合使用時(shí),位置參數(shù)必須在前面,否則程序會(huì)不知道位置參數(shù)對(duì)應(yīng)的值是什么 func3(1,2,100) func3(1,2,c=100)
4. 通過(guò)單星號(hào) '*',收集位置參數(shù),形成元組,但使用的時(shí)候也是有序的。
p = (1,2,) def func4(*para): # 存多個(gè)參數(shù),位置參數(shù)收集形成元組 print(para) func4(*p) #傳遞的也是元組形式 func4(*(1,2,))
5. 通過(guò)雙星號(hào) '**',收集關(guān)鍵字參數(shù),形成字典
arg = {'c':1,'d':2} def func5(**args): # 存多個(gè)參數(shù),關(guān)鍵字參數(shù)收集形成字典 print(args) print(args['c']) func5(**arg) #傳遞形式一 func5(**{'c':1,'d':2}) # 二,或者顯式傳遞字典
6. 位置參數(shù)和單星號(hào) '*' 收集參數(shù)的混合:?jiǎn)涡翘?hào) '*' 表示收集沒有對(duì)應(yīng)位置參數(shù)的其他位置參數(shù)
def func6(a, b, *para): # 混合位置參數(shù),*表示收集沒有對(duì)應(yīng)位置參數(shù)的其他位置參數(shù),即從前排到后,多余的位置參數(shù) print(a,b) print('para:',para) func6(1,2,3,4,5)
7. 關(guān)鍵字參數(shù)和雙星號(hào) '**' 收集參數(shù)的混合:同理雙星號(hào) '**' 表示收集沒有對(duì)應(yīng)關(guān)鍵字參數(shù)的其他關(guān)鍵字參數(shù)
def func7(c=1, d=2, **args): # 混合關(guān)鍵字參數(shù),**表示收集沒有對(duì)應(yīng)關(guān)鍵字參數(shù)的其他關(guān)鍵字參數(shù),即多余的關(guān)鍵字參數(shù) print(c,d) print('args:',args) func7(1,d=2,e=3,f=4)
8. 位置參數(shù)、關(guān)鍵字參數(shù)混合單星號(hào)收集參數(shù)、雙星號(hào)收集參數(shù):
def func(a, b, c=1, d=2, *ee, **ff): #混合關(guān)鍵字參數(shù)和位置參數(shù):*和** 分別收集多余的位置參數(shù)和關(guān)鍵字參數(shù) print(a,b,c,d) print(ee) #元組形式使用 print(ff) #字典形式使用 # func(100,200,300,400,c=500,d=600,e=700,f=800) # TypeError: func() got multiple values for argument 'c',原因是關(guān)鍵字參數(shù)也可以按照位置參數(shù)傳遞形式賦值 func(100,200,c=500,d=600,e=700,f=800) func(100,200,300,400,500,600,e=700,f=800) #從前到后多余的參數(shù)分別進(jìn)入元組(單星號(hào))和字典形式(雙星號(hào))
TypeError: func() got multiple values for argument:因?yàn)殛P(guān)鍵字參數(shù)也是可以像位置參數(shù)那樣直接傳遞的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python調(diào)用機(jī)器喇叭發(fā)出蜂鳴聲(Beep)的方法
這篇文章主要介紹了python調(diào)用機(jī)器喇叭發(fā)出蜂鳴聲(Beep)的方法,實(shí)例分析了Python調(diào)用winsound模塊的使用技巧,需要的朋友可以參考下2015-03-03python數(shù)據(jù)預(yù)處理之?dāng)?shù)據(jù)標(biāo)準(zhǔn)化的幾種處理方式
這篇文章主要介紹了python數(shù)據(jù)預(yù)處理之?dāng)?shù)據(jù)標(biāo)準(zhǔn)化的幾種處理方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python提高運(yùn)行速度工具之Pandarallel的使用教程
為了提高運(yùn)行速度,我們一般會(huì)采用多進(jìn)程的方式。而常見的方案對(duì)于普通python玩家來(lái)說(shuō)都不是特別友好,怎樣才能算作一個(gè)友好的并行處理方案?本文就來(lái)和大家講講pandarallel的使用2022-09-09matplotlib 向任意位置添加一個(gè)子圖(axes)
這篇文章主要介紹了matplotlib 向任意位置添加一個(gè)子圖(axes),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python 遞歸遍歷文件夾,并打印滿足條件的文件路徑實(shí)例
下面小編就為大家?guī)?lái)一篇python 遞歸遍歷文件夾,并打印滿足條件的文件路徑實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包
今天小編就為大家分享一篇關(guān)于Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04