Как написать функцию, которая возвращает другую функцию?

в Python, я хотел бы написать функцию make_cylinder_volume(r), которая возвращает другую функцию. Эта возвращаемая функция должна вызываться с параметром h, и возвратите том цилиндра с высотой h и радиусом r.

Я знаю, как вернуть значения из функций в Python, но как мне вернуть другая функция?

3 ответов


попробуйте это, используя Python:

import math
def make_cylinder_volume_func(r):
    def volume(h):
        return math.pi * r * r * h
    return volume

используйте его так, например, с radius=10 и height=5:

volume_radius_10 = make_cylinder_volume_func(10)
volume_radius_10(5)
=> 1570.7963267948967

обратите внимание, что возврат функции был простым вопросом определения новой функции внутри функции и возврата ее в конце - будьте осторожны, чтобы передать соответствующие параметры для каждой функции. FYI, метод возврата функции из другой функции известен как карринг.


используя лямбды, также известные как анонимные функции, вы можете абстрагироваться от


просто хочу отметить, что вы можете сделать это с pymonad

 import pymonad 

 @pymonad.curry
 def add(a, b):
     return a + b

 add5 = add(5)
 add5(4)
 9