Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用命名参数作为参数传递函数_Python - Fatal编程技术网

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)