繁体   English   中英

在 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)

但我现在还没有使用 args 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) 

使用此解决方案,包装器的参数列表中未明确提及的每个变量都会传递给内部函数。 显式列出的变量可在包装器内访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM