python 函數參數:簡明總結

1. 位置參數(必選參數)
2. 默認參數
3. 可變參數( args)
4. 關鍵字參數 (**kw)
5. 命名關鍵字參數 (
, named_kw)

可變參數:

def func(*args):
    type(args) == tuple

func(1,2,3,4)
mytuple = (1,2,3)
func(*mytuple)

允許傳入0個或任意個參數,這些可變參數在函數調用時自動組裝爲一個tuple。
若多個參數已經組合成tuple,則可使用 *mytulple 傳給可變參數args

關鍵字參數

def func(**kw):
    type(kw) == dict
    kw['city'] == 'Shanghai'
    kw['code'] == 30
    kw['pc'] == 200030

func(city='Shanghai', code=30, pc=200030)
mydict = {city='Shanghai', code=30, pc=200030}
func(**mydict)

允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict。鍵爲指定的參數名的字符串,值爲指定的參數名的值。

命名關鍵字參數

對於關鍵字參數,函數的調用者可以傳入任意不受限制的關鍵字參數。如果要限制關鍵字參數的名字,就可以用命名關鍵字參數。

def func(arg1, *, name1, name2):
	pass
def func(arg1, *agrs, name1, name2):
	pass

func(1, name1='Bob', name2='Jan')

由 * 或 可變參數(*args)隔開,後面的參數都是命名關鍵字參數。
調用時,必須寫明參數名。

組合使用5種參數

參數定義的順序必須是:
必選參數 > 默認參數 > 可變參數 > 命名關鍵字參數 > 關鍵字參數。

def func(a, b, c=0, *args, namedkw1, namedkw2, **kw):
	pass

def func(a, b, c=0, *, namedkw1, **kw):
	pass
  • 不按順序提供部分默認參數時,需要把參數名寫上。
  • 命名關鍵字參數必須提供參數名。
  • 命名關鍵字參數可有默認值,若無默認值則必須提供值。
  • 可選參數,關鍵字參數可不提供值。

對於任意函數,都可以通過類似func(*args, **kw)的形式調用它,無論它的參數是如何定義的。
args元組會按順序賦值給(必選,默認,可變)參數。先滿足前二者數量,多餘的0個或多個傳給可變參數。
kw字典會按key傳遞參數給(命名關鍵字參數,關鍵字參數)。key中必須有 無默認值的命名關鍵字參數。

mytuple = (1, 2, 3, 4, 5, 6)
mydict = {name1:value1, name2:value2}
func(*mytuple, **mydict)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章