[英]How to decorate a function while adding variables in Python
我正在尝试用Python构建一个装饰器,我在装饰阶段添加一个变量。 我知道如何编写一个装饰器,我只是在另一个函数的结果上运行一个函数,但是我在添加一个额外变量的语法上遇到了麻烦。 基本上,我想采取这个点产品功能:
def dot(x,y):
temp1=[]
for i in range(len(x)):
temp1.append(float(x[i])*y[i])
tempdot=sum(temp1)
return tempdot
并且在给定参数x,y,b的一个较大函数中从结果中减去值'b'
我是否试图在这种情况下滥用装饰功能? 谢谢。
import functools
def subtracter(b):
def wrapped(func):
@functools.wraps(func)
def decorated_func(*args, **kwargs):
return func(*args, **kwargs) - b
return decorated_func
return wrapped
然后用它作为
@subtracter(b=5)
def dot(x,y):
temp1=[]
for i in range(len(x)):
temp1.append(float(x[i])*y[i])
tempdot=sum(temp1)
return tempdot
顺便说一下你的点函数可以用生成器表达式缩短,如下所示:
def dot(x, y):
return sum(float(x)*y for x, y in zip(x, y))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.