반응형
다른 함수를 반환하는 함수를 어떻게 작성합니까?
파이썬에서는 make_cylinder_volume(r)
다른 함수를 반환 하는 함수를 작성하고 싶습니다 . 반환 된 함수는 매개 변수로 호출 할 수 있어야하며 h
높이 h
와 반경 이있는 실린더의 볼륨을 반환 해야합니다 r
.
파이썬의 함수에서 값 을 반환하는 방법을 알고 있지만 다른 함수를 어떻게 반환 합니까?
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
함수를 반환하는 것은 함수 내부에 새 함수를 정의하고 마지막에 반환하는 간단한 문제입니다. 각 함수에 대해 적절한 매개 변수를 신중하게 전달해야합니다. 참고로 다른 함수에서 함수를 반환하는 기술을 currying이라고 합니다.
익명 함수라고도하는 람다를 사용하면 volume
내부 함수 make_cylinder_volume_func
를 한 줄로 추상화 할 수 있습니다 . Óscar López의 답변과 다르지 않지만 람다를 사용하는 솔루션은 여전히 '더 기능적'이라는 의미입니다.
다음은 람다 식을 사용하여 허용 된 답변을 작성하는 방법입니다.
import math
def make_cylinder_volume_fun(r):
return lambda h: math.pi * r * r * h
그런 다음 다른 카레 함수처럼 호출합니다.
volume_radius_1 = make_cylinder_volume_fun(1)
volume_radius_1(1)
=> 3.141592653589793
pymonad로 이것을 할 수 있다는 것을 지적하고 싶습니다
import pymonad
@pymonad.curry
def add(a, b):
return a + b
add5 = add(5)
add5(4)
9
참고 URL : https://stackoverflow.com/questions/14261474/how-do-i-write-a-function-that-returns-another-function
반응형
'Nice programing' 카테고리의 다른 글
zend 프레임 워크에서 정확한 SQL 쿼리를 인쇄하는 방법은 무엇입니까? (0) | 2020.11.03 |
---|---|
DateTime에 PHP 타임 스탬프 (0) | 2020.11.03 |
목록보기에서 긴 클릭 이벤트 후 메뉴 생성 (0) | 2020.11.03 |
PHPStorm 또는 POSTman을 사용하는 XDebug 및 RESTful 서버 (0) | 2020.11.03 |
생성 후 Node.js가 ENOMEM 오류를 포착합니다. (0) | 2020.11.03 |