Предположим, что я хочу иметь функцию, которая создает функции (замыкания), которые умножают свой аргумент на аргумент фабричной функции.Как вернуть закрытие самым простым способом?
Пример в JavaScript:
function get_mult_by(m) {
return function(x) {
return m * x;
}
}
В Python я могу вернуться lambda
:
def get_mult_by(m):
return lambda x: m * x
Но если я хочу, чтобы вернуть нормальную функцию вещи становятся более сложными и менее просто (начиная с необходимостью именования функции):
def get_mult_by(m):
def mult(x):
# do something else
return m * x
return mult
Что такое ar e лучшие практики в этом отношении?
Я думаю, что это действительно имеет значение и вводит шаблонный код. – Luke
@ Luke В этом случае, я думаю, я не понимаю, почему вы разместили этот вопрос. Если бы вы уже подумали о том, что вы предпочитаете, зачем тратить время на это? –
Я подумал о том, что я предпочитаю, но не знаю, как это сделать на Python. Мне не нравится тот факт, что Python не имеет анонимных функций. – Luke