[英]how to insert new variable in (*args,**kwargs) section?
我想制作一个装饰方法来分配函数将使用但不会自己传递的变量。
例如在lambda r中添加新的变量y,我以这种方式编写代码但是没有用。
r = lambda x:x+y
def foo(func):
def wrapped(*args,**kwargs):
y = 3
return func(y=y,*args,**kwargs)
return wrapped
r = foo(r)
print(r(444))
这也行不通
r = lambda x:x+y
def foo(func):
def wrapped(*args,**kwargs):
y = 3
return func(*args,**kwargs)
return wrapped
r = foo(r)
print(r(444))
问题是函数r
只能接受一个参数,你需要改变它的定义来接受更多的参数:
r = lambda x, y=0, *args, **kwargs: x + y
def foo(func):
def wrapped(*args,**kwargs):
y = 3
return func(y=y, *args,**kwargs)
return wrapped
r = foo(r)
print(r(444))
#447
kwargs
是一个休闲的python dict类型,所以你只需将y
键的值设置为3即可
r = lambda x, y=0:x+y
def foo(func):
def wrapped(*args,**kwargs):
print type(kwargs) # will output <type 'dict'>
kwargs['y'] = 3
return func(*args,**kwargs)
return wrapped
在了解Python中的kwargs时,将对此进行详细说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.