python函数调用的参数顺序

python函数调用的参数顺序,python,function,parameter-passing,Python,Function,Parameter Passing,假设我有一个带有10个参数的函数: def foo(arg1,arg2,arg3,arg4.....): 有时,我只需要用arg1调用它,另一次调用arg1、arg4或arg4、arg7 我的程序没有指定函数调用的类型。python有办法帮助我吗?给args一个默认值,比如None: def foo(arg1=None, arg2=None, ..., arg10=None): 现在,调用函数时,传递关键字参数字典: kwargs = { 'arg1': 'test', 'a

假设我有一个带有
10个参数的
函数

def foo(arg1,arg2,arg3,arg4.....):
有时,我只需要用
arg1
调用它,另一次调用
arg1、arg4
arg4、arg7


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

给args一个默认值,比如
None

def foo(arg1=None, arg2=None, ..., arg10=None):
现在,调用函数时,传递关键字参数字典:

kwargs = {
    'arg1': 'test',
    'arg7': 'test2',
}

foo(**kwargs)
def foo(**kwargs):
    print kwargs

params = {'arg1':1, 'arg2':2}

foo(**params)         # Version 1
foo(arg1=3,arg2=4)    # Version 2
这相当于:

foo('test', None, None, None, ..., 'test2', None, None, None)
或者,更具体地说:

foo(arg1='test', arg7='test2')

您可以使用

将参数设置为可选的一种方法:

def foo(arg1=None,arg2=None,arg3=None...)
可以这样称呼:

foo(arg1=1,arg3=2)
a = {'arg1':1, 'arg3':2}
foo(**a)
或者像这样:

foo(arg1=1,arg3=2)
a = {'arg1':1, 'arg3':2}
foo(**a)
如果此参数列表失控,您可以简单地使用它让函数获取可选数量的(命名的)关键字参数:

kwargs = {
    'arg1': 'test',
    'arg7': 'test2',
}

foo(**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}
注意:您可以使用一个星号(
*
)来表示任意数量的参数


使用默认参数
def foo(arg1=val,arg2=val2,arg3=val3,…):
如果foo()之外有一个名为“arg1”的变量,与foo()中的可选参数同名,该怎么办?它会引起冲突吗?不,它不会引起冲突,肖恩。我想你在描述foo(arg1=arg1)。Python解释器知道“=”左侧的标记表示参数的名称。