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