轉載:https://blog.csdn.net/abc_12366/article/details/79627263
1、位置參數:
def func(a, b):
print(a+b)
func(1, 2) #3
2、默認參數,默認參數就是在調用函數的時候使用一些包含默認值的參數
def jia(a,b=6):
print(a+b)
jia(4)##10
3、可變參數,就是允許在調用參數的時候傳入多個(≥0個)參數(類似於列表、字典)
#傳入一個列表,嚴格地說這不是可變參數
def calc(l):
sum = 0
for n in l:
sum += n
return sum
calc([1,2,3]) ##7
#這才是可變參數,雖然在使用上和列表沒有區別,但是參數nums接收到的是一個tuple(這些參數在傳入時被自動組組裝為一個元祖)
def calc(*nums):
sum = 0
for n in nums:
sum += n
return sum
calc([1,2,3]) ##7
4、關鍵字參數
可變參數允許傳入0個~多個參數,而關鍵字參數允許在調用時以字典形式傳入0個或多個參數(注意區別,一個是字典一個是列表);在傳遞參數時用等號(=)連接鍵和值
#用兩個星號表示關鍵字參數 def person_info(name, age, **kw): print("name", name, "age", age, "other", kw) >>> person_info("Xiaoming", 12) name Xiaoming age 12 other{} >>> person_info("Dahuang", 35, city = "Beijing") name Dahuang age 35 other {'city':'Beijing'}
參數組合總結
總結一下,在Python中一種可以使用5中傳遞參數的方式(位置參數、默認參數、變長參數、關鍵字參數、命名關鍵字參數)
注意,這些參數在書寫時要遵循一定的順序即:位置參數、默認參數、變長參數、關鍵字參數、命名關鍵字參數(和本文的行文順序一致)
這里簡單舉兩個栗子
def f1(a, b, c=0, *args, **kw): print("a = ", a, "b = ", b, "args = ", args, "kw = ",kw) def f2(a, b, c=0, *, d, **kw): print("a = ", a, "b = ", b, "c = ", c, "d = ", d, "kw = ", kw) >>> f1(1, 2) a = 1 b = 2 c = 0 args =() kw = {} >>> f1(1, 2, c=3) a = 1 b = 2 c = 3 args = () kw = {} >>> f1(1, 2, 3, 'a', 'b') a = 1 b = 2 c = 3 args = ('a', 'b') kw = {} >>> f1(1, 2, 3, 'a', 'b', x = 99) a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x':99} >>> f2(1, 2, d = 99, ext = None) a = 1 b =2 c = 0 d = 99 kw = {'ext':None}