Python-我可以为此使用装饰器吗?

时间:2018-08-28 08:45:46

标签: python function python-decorators

def f(a,b):
    lista = []
    listb = []
    lista.append(a**2)
    listb.append(b**2)
    return lista, listb

但是我还想返回一个由两个列表组成的数组。

类似:

def f2(a,b):
    lista = []
    listb = []
    lista.append(a**2)
    listb.append(b**2)
    tr = np.array([np.array(lista), np.array(listb)]).T
    return tr

两个函数共享相同的参数,但是我不想将列表和数组都作为返回值堆积。

我可以以某种方式使用装饰器no f来定义另一个仅接受其参数并执行其他操作的函数吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以使用以下装饰器:

def tr(func):
    def wrapper(a, b):
        lista, listb = func(a, b)
        return np.array([np.array(lista), np.array(listb)]).T
    return wrapper

以便可以简单地定义f2

@tr
def f2(a, b):
    return f(a, b)