1

これに従って、関数を引数として渡しました。

引数を持つ関数を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(arg1, namedArg=arg2)

助けてください/

4

3 に答える 3

3

*args兄弟**kwargsは、通常、追加の引数とキーワード引数に使用される名前です。を渡すときに、キューワード引数を渡していますnamedArg=arg2

したがって、代わりにこれを試してください:

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}
于 2013-07-22T04:11:47.347 に答える
0

必要なのは functools です。

http://docs.python.org/2/library/functools.html#functools.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)
于 2013-07-22T04:23:02.020 に答える