您好,登錄后才能下訂單哦!
小編這次要給大家分享的是淺談Python參數傳遞及收集機制,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
python參數傳遞時,主要有位置參數和關鍵字參數。
1. 位置參數:顧名思義,參數的位置順序很重要,因為是直接根據位置賦值的。
def func1(a, b): print(a,b) # 位置參數,位置順序很重要 func1(1,2)
2. 關鍵字參數:首先使得位置不那么重要了,畢竟參數一多,有些人記不住位置也很正常;其次更重要的是可以提供初始值。
def func2(c=1, d=2): print(c,d) # 關鍵字參數,1. 使得位置不那么重要;2. 可提供初始值 func2() #使用初始值 func2(100,200) #關鍵字參數也可用位置參數的傳遞形式 func2(c=100,d=200) #變換位置 func2(d=200,c=200)
3. 位置參數和關鍵字參數混合時,位置參數必須全部在關鍵字參數的前面。
def func3(a, b, c=1): print(a,b,c) # 混合使用時,位置參數必須在前面,否則程序會不知道位置參數對應的值是什么 func3(1,2,100) func3(1,2,c=100)
4. 通過單星號 '*',收集位置參數,形成元組,但使用的時候也是有序的。
p = (1,2,) def func4(*para): # 存多個參數,位置參數收集形成元組 print(para) func4(*p) #傳遞的也是元組形式 func4(*(1,2,))
5. 通過雙星號 '**',收集關鍵字參數,形成字典
arg = {'c':1,'d':2} def func5(**args): # 存多個參數,關鍵字參數收集形成字典 print(args) print(args['c']) func5(**arg) #傳遞形式一 func5(**{'c':1,'d':2}) # 二,或者顯式傳遞字典
6. 位置參數和單星號 '*' 收集參數的混合:單星號 '*' 表示收集沒有對應位置參數的其他位置參數
def func6(a, b, *para): # 混合位置參數,*表示收集沒有對應位置參數的其他位置參數,即從前排到后,多余的位置參數 print(a,b) print('para:',para) func6(1,2,3,4,5)
7. 關鍵字參數和雙星號 '**' 收集參數的混合:同理雙星號 '**' 表示收集沒有對應關鍵字參數的其他關鍵字參數
def func7(c=1, d=2, **args): # 混合關鍵字參數,**表示收集沒有對應關鍵字參數的其他關鍵字參數,即多余的關鍵字參數 print(c,d) print('args:',args) func7(1,d=2,e=3,f=4)
8. 位置參數、關鍵字參數混合單星號收集參數、雙星號收集參數:
def func(a, b, c=1, d=2, *ee, **ff): #混合關鍵字參數和位置參數:*和** 分別收集多余的位置參數和關鍵字參數 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',原因是關鍵字參數也可以按照位置參數傳遞形式賦值 func(100,200,c=500,d=600,e=700,f=800) func(100,200,300,400,500,600,e=700,f=800) #從前到后多余的參數分別進入元組(單星號)和字典形式(雙星號)
TypeError: func() got multiple values for argument:因為關鍵字參數也是可以像位置參數那樣直接傳遞的。
看完這篇關于淺談Python參數傳遞及收集機制的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。