的函數調用的參數假設我有一個function
與10 args
:秩序的蟒蛇
def foo(arg1,arg2,arg3,arg4.....):
有時候,我需要的只有arg1
另一次arg1, arg4
,或arg4 , arg7
調用它。
我的程序沒有指定函數調用的類型。 python有辦法幫助我嗎?
的函數調用的參數假設我有一個function
與10 args
:秩序的蟒蛇
def foo(arg1,arg2,arg3,arg4.....):
有時候,我需要的只有arg1
另一次arg1, arg4
,或arg4 , arg7
調用它。
我的程序沒有指定函數調用的類型。 python有辦法幫助我嗎?
一種方式做到這一點是使參數可選:
def foo(arg1=None,arg2=None,arg3=None...)
可以這樣調用:
foo(arg1=1,arg3=2)
或類似這樣的:
a = {'arg1':1, 'arg3':2}
foo(**a)
如果參數此名單失控,你可以簡單地使用**kwargs
讓你的函數取(命名)的關鍵字參數可選號碼:
def foo(**kwargs):
print kwargs
params = {'arg1':1, 'arg2':2}
foo(**params) # Version 1
foo(arg1=3,arg2=4) # Version 2
輸出:
{'arg1': 1, 'arg2': 2}
{'arg1': 3, 'arg2': 4}
注意:對於任意數量的參數,您可以使用一個星號(
*
),該參數的值爲wrapped up in a tuple。
如果什麼有一個名爲 「ARG1」 變量,同樣命名爲可選參數在foo()中,在foo()之外?它會引起衝突嗎? – Sean
給你ARGS像None
默認值:
def foo(arg1=None, arg2=None, ..., arg10=None):
現在,調用函數時傳遞的參數的字典:
kwargs = {
'arg1': 'test',
'arg7': 'test2',
}
foo(**kwargs)
它等同於:
foo('test', None, None, None, ..., 'test2', None, None, None)
或者更具體地說:
foo(arg1='test', arg7='test2')
你可以使用keyword arguments
使用默認參數參數 –
'高清富(ARG1 = VAL,ARG2 =值2,ARG3 = VAL3,...):' –