2016-07-09 2 views

답변

2

그것을 분해하여 작업하는 방법을 누군가가 나를 설명 working.Can 방법처럼 나를 혼란 (20)

입니다

apply_twice(add_five,10))

add_five(add_five(10)) # add_five(10) = 15

다음 print 호출로 시작, 다음 apply_twice를 호출하면 (20)

, 당신은 함수 객체와 값이 전달됩니다 당신에게 결과를 제공

add_five(15) # add_five(15) = 20

. apply_twice 정의에서 볼 수 있듯이 func이 전달 된 함수 객체 (이 경우 add_five)로 대체됩니다. 그런 다음 내부 func(arg) 호출로 시작하여 그 결과를 add_five 외부의 return func(...) 호출로 다시 전달합니다.

7
apply_twice(func,arg)

함수가 호출 함수 argfunc 전달할 두 인수 함수 객체 func, 인수 걸린다. 파이썬에서

, 기능은 쉽게 다른 인수 유형 (즉이 first class citizens) 다르게 치료하지 , 인수로 다른 함수에 건네 줄 수가 있습니다.

apply_twice 내부 func은 라인에 두 번 호출됩니다

func(func(arg)) 
어느 대안으로 더 친화적 인 방법으로 볼 수 있습니다

:

res = func(arg) 
func(res) 

당신이 이름으로 func을 교체하는 경우 add_five에 전달 된 함수는 다음과 같습니다.

res = add_five(arg) # equals: 15 
add_five(res)  # result: 20 

물론 예상 결과가 반환됩니다. 이에서 기억해야 할

중요한 점은 당신이 어떤 특별한 구조로 Python의 기능으로 생각해야한다는 것입니다, 기능은 int의 같은 객체, lists들 그리고 다른 모든 것들입니다.

관련 문제