Python可變長引數

2021-07-26 16:29:40 字數 3811 閱讀 8044

可變長的引數元組必須在位置和預設引數之後,帶元組(或者非關鍵字可變長引數)的函式普遍的語法如下:

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...