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) ’*’ 表示收集沒(méi)有對(duì)應(yīng)位置參數(shù)的其他位置參數(shù)
def func6(a, b, *para): # 混合位置參數(shù),*表示收集沒(méi)有對(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) ’**’ 表示收集沒(méi)有對(duì)應(yīng)關(guān)鍵字參數(shù)的其他關(guān)鍵字參數(shù)
def func7(c=1, d=2, **args): # 混合關(guān)鍵字參數(shù),**表示收集沒(méi)有對(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í)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法2. ASP常用日期格式化函數(shù) FormatDate()3. 解析原生JS getComputedStyle4. 輕松學(xué)習(xí)XML教程5. jsp實(shí)現(xiàn)登錄驗(yàn)證的過(guò)濾器6. 阿里前端開(kāi)發(fā)中的規(guī)范要求7. xpath簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理8. css代碼優(yōu)化的12個(gè)技巧9. jsp EL表達(dá)式詳解10. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))
