- 位置參數
power(x, n)函數有兩個參數:x和n,這兩個參數都是位置參數,調用函數時,傳入的兩個值按照位置順序依次賦給參數x和n。
- 默認參數 =
默認參數必須指向不變對象! def enroll(name, gender, age=6, city='Beijing'): print('name:', name) print('gender:', gender) 調用:enroll('Bob', 'M', 7)、enroll('Adam', 'M', city='Tianjin')
- 可變參數:* >=0
可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝爲一個tuple---類似list,不可變元組 def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum 調用時傳入一個list或tuple 調用 calc(1,2,3)
- 關鍵字參數(**kw)----key--value(map)
關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict。 def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw) 調用 >>> person('Michael', 30) name: Michael age: 30 other: {} 也可以傳入任意個數的關鍵字參數 person('Bob', 35, city='Beijing') name: Bob age: 35 other: {'city': 'Beijing'}
- 命名關鍵字參數 *
如果要限制關鍵字參數的名字,就可以用命名關鍵字參數
-
例如,只接收city和job作爲關鍵字參數。 def person(name, age, *, city, job): print(name, age, city, job)
-
如果函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就不再需要一個特殊分隔符*了 def person(name, age, *args, city, job): print(name, age, args, city, job) 命名關鍵字參數必須傳入參數名,這和位置參數不同。 如果命名關鍵字參數city具有默認值,調用時,可不傳入city參數。
- 參數組合
在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,
-
這5種參數都可以組合使用。但是請注意,參數定義的順序必須是
-
必選參數-->默認參數-->可變參數-->命名關鍵字參數-->關鍵字參數。
備註:
>>> args = (1, 2, 3, 4)
>>> kw = {'d': 99, 'x': '#'}
>>> f1(*args, **kw)
#這句其實就是f1(args[1],args[2],args[3],args[4],d=99,x='#')的縮寫
a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'}
>>> args = (1, 2, 3)
>>> kw = {'d': 88, 'x': '#'}
>>> f2(*args, **kw)
#這句其實就是f2(args[1],args[2],args[3],d=88,x='#')的縮寫