繁体   English   中英

如何在Python中添加变量时修饰函数

[英]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.

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