Python參數(shù)傳遞及收集機(jī)制原理解析
python參數(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ù)必須全部在關(guān)鍵字參數(shù)的前面。
def func3(a, b, c=1): print(a,b,c) # 混合使用時,位置參數(shù)必須在前面,否則程序會不知道位置參數(shù)對應(yīng)的值是什么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. 通過雙星號 ’**’,收集關(guān)鍵字參數(shù),形成字典
arg = {’c’:1,’d’:2}def func5(**args): # 存多個參數(shù),關(guān)鍵字參數(shù)收集形成字典 print(args) print(args[’c’])func5(**arg) #傳遞形式一func5(**{’c’:1,’d’:2}) # 二,或者顯式傳遞字典
6. 位置參數(shù)和單星號 ’*’ 收集參數(shù)的混合:單星號 ’*’ 表示收集沒有對應(yīng)位置參數(shù)的其他位置參數(shù)
def func6(a, b, *para): # 混合位置參數(shù),*表示收集沒有對應(yīng)位置參數(shù)的其他位置參數(shù),即從前排到后,多余的位置參數(shù) print(a,b) print(’para:’,para)func6(1,2,3,4,5)
7. 關(guān)鍵字參數(shù)和雙星號 ’**’ 收集參數(shù)的混合:同理雙星號 ’**’ 表示收集沒有對應(yīng)關(guān)鍵字參數(shù)的其他關(guān)鍵字參數(shù)
def func7(c=1, d=2, **args): # 混合關(guān)鍵字參數(shù),**表示收集沒有對應(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ù)混合單星號收集參數(shù)、雙星號收集參數(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)入元組(單星號)和字典形式(雙星號)
TypeError: func() got multiple values for argument:因?yàn)殛P(guān)鍵字參數(shù)也是可以像位置參數(shù)那樣直接傳遞的。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
