代码之家  ›  专栏  ›  技术社区  ›  SuperCiocia

Python-我能用一个装饰器吗?

  •  0
  • SuperCiocia  · 技术社区  · 6 年前
    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
    

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

    f 从而定义另一个函数,只接受它的参数并执行另一个操作?

    1 回复  |  直到 6 年前
        1
  •  0
  •   blhsing    6 年前

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

    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)