2013-08-25 42 views
1

的函數調用的參數假設我有一個function10 args秩序的蟒蛇

def foo(arg1,arg2,arg3,arg4.....): 

有時候,我需要的只有arg1另一次arg1, arg4,或arg4 , arg7調用它。

我的程序沒有指定函數調用的類型。 python有辦法幫助我嗎?

+0

使用默認參數參數 –

+0

'高清富(ARG1 = VAL,ARG2 =值2,ARG3 = VAL3,...):' –

回答

5

一種方式做到這一點是使參數可選:

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

+0

如果什麼有一個名爲 「ARG1」 變量,同樣命名爲可選參數在foo()中,在foo()之外?它會引起衝突嗎? – Sean

4

給你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')