Python中根據函數的輸入參數以及是否有返回值可分為四種函數:
1.無參數無返回值
2.有參數無返回值
3.無參數有返回值
4.有參數無返回值
Python 中參數傳遞有下列五種方式;
1.位置傳遞
2.關鍵字傳遞
3.默認值傳遞
4.不定參數傳遞(包裹傳遞)
5.解包裹傳遞
一 位置傳遞
沒什么好過多講解.
1 # 位置傳遞實例: 2 def fun1(a,b,c): 3 return a+b+c 4 5 print(fun1(1,2,3))
輸出:
1 6
二 關鍵字傳遞
更具每個參數的名字寫入函數參數
1 # 關鍵字傳遞 2 def fun2(a,b,c): 3 return a+b+c 4 5 print(fun2(1,c=3,b=2))
輸出:
6
三 參數默認值傳遞
給函數的輸入參數設定一個默認值,如果該參數最終沒有輸入,則使用默認參數出入函數.
1 # 默認值傳遞 2 def fun3(a,b=2,c=3): 3 return a+b+c 4 5 print(fun3(a = 1))
輸出:
1 6
四 包裹傳遞
在定義函數時,我們有時候並不知道調用的時候會傳遞多少個參數。這時候,包裹(packing)位置參數或者包裹關鍵字參數來進行參數傳遞會非常有用。
下面是包裹位置傳遞的例子:
1 def fun4(*name): 2 print(type(name)) 3 print(name) 4 5 fun4([1,2,3]) 6 fun4((1,2,3)) 7 fun4(1,2,3)
結果:
<class 'tuple'> ([1, 2, 3],) <class 'tuple'> ((1, 2, 3),) <class 'tuple'> (1, 2, 3)
從上面的結果分析:
在fun4的參數表中,所有的參數被name收集,根據位置合並成一個元祖(tuple),這就是包裹位置傳遞。
五 解包裹傳遞

1 def func1(a,b=1,*c,**d): 2 print(a,b,c,d) 3 4 5 l = [3,4] 6 dic = {'@':2,'#':3} 7 8 func1(1,2,l,dic) 9 print("---------**------------") 10 func1(1,2,*l,**dic) 11 func1(1,2,3,4,**dic)
運行結果:

1 1 2 ([3, 4], {'@': 2, '#': 3}) {} 2 ---------**------------ 3 1 2 (3, 4) {'@': 2, '#': 3} 4 1 2 (3, 4) {'@': 2, '#': 3}