Python 使用命名参数作为参数传递函数
我遵循以下步骤将函数作为参数传递: 但是,我不知道如何将自己的参数作为名称参数传递给函数Python 使用命名参数作为参数传递函数,python,Python,我遵循以下步骤将函数作为参数传递: 但是,我不知道如何将自己的参数作为名称参数传递给函数 def retry(func, *args): func(*args) def action(args): do something retry(action, arg1, namedArg=arg2) 这里我有一个例外: TypeError: retry() got an unexpected keyword argument 'namedArg' 通常,我可以做: action(arg
def retry(func, *args):
func(*args)
def action(args):
do something
retry(action, arg1, namedArg=arg2)
这里我有一个例外:
TypeError: retry() got an unexpected keyword argument 'namedArg'
通常,我可以做:
action(arg1, namedArg=arg2)
请帮助/
*args
和它的兄弟姐妹**kwargs
是通常用于额外参数和关键字参数的名称。当您传递namedArg=arg2
时,您正在传递一个kew word参数
因此,请尝试以下方法:
def retry(func, *args, **kwargs):
func(*args, **kwargs)
def action(*args, **kwargs):
do something
retry(action, arg1, namedArg=arg2)
如果你改用
def action(args, kwargs):
do something
然后,您将使用args
作为参数列表,而kwargs
作为关键字参数字典,在您的例子中也是如此
args = [arg1]
kwargs = {'namedArg':arg2}
读这个
因为错误明确指出,得到了一个意外的关键字参数'namedArg'
。其中,因为您只在*args中提供参数
你会找到很多例子来理解关键字参数。你需要的是工具
如何确保目标函数中参数的顺序?让我试试这个?thx对于快速repsonsets,列表中参数的顺序将与传递的顺序相同。关键字args是一个字典,因此没有顺序。一般来说,您是对的,但是
retry()
函数的要点似乎是在函数调用失败时重复函数调用。在您的例子中,可以将partial()
的结果提供给该函数,并让它按原样调用它。但从你写的内容来看,这并不清楚。
from functools import partial
def action(arg):
do something
def action2(arg=1):
do something
def action3(arg1, arg2=2):
do something
partial(action, arg1)
partial(action, arg1, arg2=3)