Python Language
부분 함수
수색…
소개
OOP 학교에서 온 학생이라면 추상적 인 수업을 전문으로하고 그것을 사용하는 것은 코드를 작성할 때 명심해야 할 연습입니다.
추상적 인 기능을 정의하고 다른 기능을 생성하기 위해 특수화 할 수 있다면 어떨까요? 특정 매개 변수를 바인딩하여 특정 시나리오에 대해 신뢰할 수 있도록하는 일종의 함수 상속 이라고 생각합니다.
통사론
- 부분 (함수, ** params_you_want_fix)
매개 변수
Param | 세부 |
---|---|
엑스 | 제기 할 수 |
와이 | 지수 |
증가 | 전문화 된 기능 |
비고
파이썬 문서에 언급 된대로 functools.partial :
호출 될 때 위치 인수 args 및 keyword arguments 키워드로 호출되는 func처럼 동작 할 새로운 부분 객체를 반환합니다. 더 많은 인수가 호출에 제공되면 args에 추가됩니다. 추가 키워드 인수가 제공되면 키워드를 확장하고 무시합니다.
부분 을 구현하는 방법을 보려면 이 링크 를 확인하십시오.
힘을 키우다.
x 를 숫자 y로 올리려고한다고 가정 해 봅시다.
다음과 같이 작성하십시오.
def raise_power(x, y):
return x**y
y 값이 유한 값 집합을 가정 할 수 있다면 어떨까요?
y 가 [3,4,5] 중 하나가 될 수 있다고 가정 해 봅시다. 최종 사용자가 매우 계산 집약적이므로 그러한 함수를 사용할 가능성을 원하지 않는다고 가정 해 봅시다. 실제로 y 가 유효한 값을 가정하고 함수를 다음과 같이 다시 작성하는지 확인합니다.
def raise(x, y):
if y in (3,4,5):
return x**y
raise NumberNotInRangeException("You should provide a valid exponent")
어질러 놓은? 추상적 인 형식을 사용하고 세 가지 경우 모두에 특화하십시오. 부분적으로 구현합시다.
from functors import partial
raise_to_three = partial(raise, y=3)
raise_to_four = partial(raise, y=4)
raise_to_five = partial(raise, y=5)
여기서 어떻게됩니까? 우리는 y 매개 변수를 고쳤으며 세 가지 다른 함수를 정의했습니다.
위에서 정의한 추상 함수를 사용할 필요가 없습니다 ( private로 만들 수는 있지만) 부분적으로 적용된 함수를 사용하여 숫자를 고정 된 값으로 올리는 것을 처리 할 수 있습니다.