在 Python 的函数中正确使用 kwargs
Using kwargs in a function in Python properly
我正在尝试在 Python 中的函数中使用 kwargs,但我做不好。
这是我的尝试:
def f_add(x, y, a):
return(x + y + a)
def f_add_wrapper(f_, b, **kwargs):
return(f_add(x,y,a**b))
f_add_wrapper(f_ = f_add, b = 2, **{'x' : 2, 'y' :3, 'a' : 2})
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-236-b37777c914bd> in <module>()
----> 1 f_add_wrapper(f_ = f_add, b = 2, kwargs = [2, 3, 2])
<ipython-input-229-5e01b9db8974> in f_add_wrapper(f_, b, **kwargs)
1 def f_add_wrapper(f_, b, **kwargs):
2
----> 3 return(f_add(x,y,a**b))
NameError: name 'x' is not defined
f_add_wrapper(f_ = f_add, b = 2, **{x : 2, y :3, a : 2})
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-248-b862f2191e7b> in <module>()
----> 1 f_add_wrapper(f_ = f_add, b = 2, **{x : 2, y :3, a : 2})
NameError: name 'x' is not defined
如果我答对了你的问题,解决方案可能如下:
您必须更改 f_add_wrapper
方法并将 kwargs 传递给内部方法。
def f_add_wrapper(f_, b, **kwargs):
return f_add(**kwargs)
但我现在还没有使用参数 f_
和 b
。
如果你想使用 f_
作为你必须写的方法:
def f_add_wrapper(f_, b, **kwargs):
return f_(**kwargs)
如果你也想使用变量 a
,我会在你的参数列表中添加一个显式:
def f_add_wrapper(f_, b, a, **kwargs):
a_to_power_of_b = a**b
return f_(a=a_to_power_of_b , **kwargs)
使用此解决方案,包装器参数列表中未明确提及的每个变量都将传递给内部函数。显式列出的变量可在包装器中访问。
我正在尝试在 Python 中的函数中使用 kwargs,但我做不好。
这是我的尝试:
def f_add(x, y, a):
return(x + y + a)
def f_add_wrapper(f_, b, **kwargs):
return(f_add(x,y,a**b))
f_add_wrapper(f_ = f_add, b = 2, **{'x' : 2, 'y' :3, 'a' : 2})
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-236-b37777c914bd> in <module>()
----> 1 f_add_wrapper(f_ = f_add, b = 2, kwargs = [2, 3, 2])
<ipython-input-229-5e01b9db8974> in f_add_wrapper(f_, b, **kwargs)
1 def f_add_wrapper(f_, b, **kwargs):
2
----> 3 return(f_add(x,y,a**b))
NameError: name 'x' is not defined
f_add_wrapper(f_ = f_add, b = 2, **{x : 2, y :3, a : 2})
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-248-b862f2191e7b> in <module>()
----> 1 f_add_wrapper(f_ = f_add, b = 2, **{x : 2, y :3, a : 2})
NameError: name 'x' is not defined
如果我答对了你的问题,解决方案可能如下:
您必须更改 f_add_wrapper
方法并将 kwargs 传递给内部方法。
def f_add_wrapper(f_, b, **kwargs):
return f_add(**kwargs)
但我现在还没有使用参数 f_
和 b
。
如果你想使用 f_
作为你必须写的方法:
def f_add_wrapper(f_, b, **kwargs):
return f_(**kwargs)
如果你也想使用变量 a
,我会在你的参数列表中添加一个显式:
def f_add_wrapper(f_, b, a, **kwargs):
a_to_power_of_b = a**b
return f_(a=a_to_power_of_b , **kwargs)
使用此解决方案,包装器参数列表中未明确提及的每个变量都将传递给内部函数。显式列出的变量可在包装器中访问。