Как написать функцию, которая возвращает другую функцию?
в 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