Per*_*ulf 3 python function parameter-passing
假设我有一个function具有10 args:
def foo(arg1,arg2,arg3,arg4.....):
Run Code Online (Sandbox Code Playgroud)
有时候,我只需要arg1和其他时间一起打电话arg1, arg4,或者arg4 , arg7.
我的程序没有指定函数调用的类型.python有办法帮助我吗?
key*_*ser 11
一种方法是使参数可选:
def foo(arg1=None,arg2=None,arg3=None...)
Run Code Online (Sandbox Code Playgroud)
可以像这样调用:
foo(arg1=1,arg3=2)
Run Code Online (Sandbox Code Playgroud)
或者像这样:
a = {'arg1':1, 'arg3':2}
foo(**a)
Run Code Online (Sandbox Code Playgroud)
如果这个参数列表失去控制,你可以简单地使用**kwargs你的函数获取一些可选的(命名的)关键字参数:
def foo(**kwargs):
print kwargs
params = {'arg1':1, 'arg2':2}
foo(**params) # Version 1
foo(arg1=3,arg2=4) # Version 2
Run Code Online (Sandbox Code Playgroud)
输出:
{'arg1': 1, 'arg2': 2}
{'arg1': 3, 'arg2': 4}
Run Code Online (Sandbox Code Playgroud)
注意:您可以使用一个星号(
*)表示将包含在元组中的任意数量的参数.
给您的参数一个默认值,如None:
def foo(arg1=None, arg2=None, ..., arg10=None):
Run Code Online (Sandbox Code Playgroud)
现在,当调用函数时,传递一个关键字参数字典:
kwargs = {
'arg1': 'test',
'arg7': 'test2',
}
foo(**kwargs)
Run Code Online (Sandbox Code Playgroud)
等效于:
foo('test', None, None, None, ..., 'test2', None, None, None)
Run Code Online (Sandbox Code Playgroud)
或者,更具体地说:
foo(arg1='test', arg7='test2')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5086 次 |
| 最近记录: |