Python - могу ли я использовать для этого декоратор? - PullRequest
0 голосов
/ 28 августа 2018
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 Ответ

0 голосов
/ 28 августа 2018

Да, вы можете использовать следующий декоратор:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...