可變長的引數元組必須在位置和預設引數之後,帶元組(或者非關鍵字可變長引數)的函式普遍的語法如下:
def
function_name
([formal_args,] *nkwargs):
"function_documentation_string"
function_body_suite
星號操作符之後的形參將作為元組傳遞給函式,元組儲存了所有傳遞給函式的」額外」的引數(匹配了所有位置和具名引數後剩餘的)。如果沒有給出額外的引數,元組為空。示例:
def
tuplevarargs
(arg1, arg2='defaultb', *therest):
'display regular args and non-keyword variable args'
print
'formal arg 1:', arg1
print
'formal arg 2:', arg2
for eachxtrarg in therest:
print
'another arg:', eachxtrarg
print
'*' * 20
tuplevarargs('abc')
tuplevarargs(23, 4.56)
tuplevarargs('abc', 123, 'xyz', 456.789)
輸出:
formal arg 1: abc
formal arg 2: defaultb
********************
formal arg 1: 23
formal arg 2: 4.56
********************
formal arg 1: abc
formal arg 2: 123
another arg: xyz
another arg: 456.789
********************
使用變數引數字典來應對額外關鍵字引數的函式定義的語法:
def
function_name
([formal_args,][*nkwargs,] **kwargs):
"function_documentation_string"
function_body_suite
關鍵字變數引數應該為函式定義的最後乙個引數,帶**。示例:
def
dictvarargs
(arg1, arg2='defaultb', **therest):
'display 2 regular args and keyword variable args'
print
'formal arg1:', arg1
print
'formal arg2:', arg2
for eachxtrarg in therest.keys():
print
'xtra arg %s: %s' % (eachxtrarg, str(therest[eachxtrarg]))
print
'*' * 20
dictvarargs(1220, 740.0, c='grail')
dictvarargs(arg2='tales', c=123, d='poe', arg1='mystery')
dictvarargs('one', d=10, e='zoo', men=('freud', 'gaudi'))
輸出:
formal arg1: 1220
formal arg2: 740.0
xtra arg c: grail
********************
formal arg1: mystery
formal arg2: tales
xtra arg c: 123
xtra arg d: poe
********************
formal arg1: one
formal arg2: defaultb
xtra arg men: ('freud', 'gaudi')
xtra arg e: zoo
xtra arg d: 10
********************
關鍵字和非關鍵字可變長引數都有可能用在同乙個函式中,只要關鍵字字典是最後乙個引數並且非關鍵字元組先於它之前出現,正如在如下例子中的一樣:
def
newfoo
(arg1, arg2, *nkwargs, **kwargs):
'display regular args and all variable args'
print
'arg1 is:', arg1
print
'arg2 is:', arg2
for eachnkw in nkwargs:
print
'additional non-keyword arg:', eachnkw
for eachkw in kwargs.keys():
print
"additional keyword arg '%s': %s" % (eachkw, kwargs[eachkw])
print
'*' * 20
#example 1
newfoo(10, 20, 30, 40, foo=50, bar=60)
#example 2
newfoo(2, 4, *(6, 8), **)
#example 3
atuple = (6, 7, 8)
adict =
newfoo(1, 2, 3, x=4, y=5, *atuple, **adict)
輸出:
arg1 is: 10
arg2 is: 20
additional non-keyword arg: 30
additional non-keyword arg: 40
additional keyword arg 'foo': 50
additional keyword arg 'bar': 60
********************
arg1 is: 2
arg2 is: 4
additional non-keyword arg: 6
additional non-keyword arg: 8
additional keyword arg 'foo': 10
additional keyword arg 'bar': 12
********************
arg1 is: 1
arg2 is: 2
additional non-keyword arg: 3
additional non-keyword arg: 6
additional non-keyword arg: 7
additional non-keyword arg: 8
additional keyword arg 'y': 5
additional keyword arg 'x': 4
additional keyword arg 'z': 9
********************
說明: python可變長引數
程式設計函式時,偶爾會遇到引數數量不確定的時候,這時候就要使用可變引數.在python中,提供了兩種可變引數 在形參名前加乙個 表示接受任意多的引數 def func args print args func func 1 1,func 1,2 1,2 在形參名前加兩個 表示接受任意的關鍵引數 de...
python 可變長引數
引數組 args,kwargs 實參有按位置和按關鍵字兩種形式定義,args和 kwargs 位置引數 按照從左到右的順序定義的引數 位置形參 必選引數 位置實參 按照位置給形參傳值 關鍵字引數 按照key value的形式定義的實參 無需按照位置為形參傳值 注意的問題 1.關鍵字實參必須在位置實參...
python變長引數列表 可變長引數
可變長引數 預設情況下,必須使用正確數量的引數呼叫函式,這意味著,如果您的函式需要2個引數,則必須使用2個引數 不多也不少 來呼叫函式。示例,該函式需要2個引數,並獲得2個引數 def my function fname,lname print fname lname my function emi...