Как определить функцию, включающую другую функцию? - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть рабочая функция:

def yo(a, b):
    return np.random.rand(a, b)

Я хочу определить новую функцию res, которая вызывает yo, и другую функцию reshape:

def res(a, b):
    maa = []
    for t in yo(a, b):
        maa.append(t[0])
        return np.reshape(maa, (a, 1))   # Calling another function

НоКогда я запустил эту функцию res, как показано ниже, я столкнулся с ошибкой:

res(5,4)

cannot reshape array of size 1 into shape (5,1)

Когда я удалил подфункцию, как показано ниже, код работает отлично.

maa = []
for t in yo(5, 4):
    maa.append(t[0])
print(np.reshape(maa,(5,1))) 

В целом, я хотел бы понять, как определить функцию внутри функции.

1 Ответ

0 голосов
/ 30 декабря 2018

У вас просто ошибка с отступом, как предполагает Безумный Физик.Оператор return должен вызываться после завершения цикла for:

def res(a, b):
    maa = []
    for t in yo(a, b):
        maa.append(t[0])
    return np.reshape(maa, (a, 1)) # Notice the indentation on this line

Это вернет тот же результат, что и когда вы не используете def.Причина ошибки заключается в том, что np.reshape пытается работать только с одной строкой массива, выведенного с помощью yo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...