3

假设我有一个functionwith 10 args

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

有时,我需要调用它 onlyarg1和另一个 time arg1, arg4,或者arg4 , arg7.

我的程序没有指定函数调用的类型。python有办法帮助我吗?

4

3 回答 3

13

一种方法是使参数可选:

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}

注意:您可以将一个星号 ( *) 用于将包含在一个 tuple 中的任意数量的参数。

于 2013-08-25T09:52:21.997 回答
5

给你的参数一个默认值,比如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')
于 2013-08-25T09:32:10.320 回答
0

您可以使用关键字参数

于 2013-08-25T09:35:26.997 回答