2012-07-20 4 views

답변

15

사실이 기능은 n이기 때문에 power()이라고 부릅니다. 이 표준 라이브러리에 같은 건 없다,하지만 당신은 쉽게 직접 구현할 수 있습니다

def power(f, n): 
    def wrapped(x): 
     for i in range(n): 
      x = f(x) 
     return x 
    return wrapped 
+0

감사합니다, 스벤. ''wrapped'' 함수는 마술처럼 보입니다. –

+0

내가 할 수 있으면이 +100을 주겠다. 매우 우아한! – inspectorG4dget

+0

나는 ** 반복적 인 ** 방법 대신 ** 재귀적인 ** 방법이 있는지를 궁금 할 것입니다. –

5

감사합니다,

스벤

을 나는 것을 할 수있는 재귀 적 방법을 발견,하지만 당신은 더 파이썬 같습니다

을 장식으로 구현

def power(func, n): 
    def lazy(x, i=n): 
     return func(lazy(x, i-1)) if i > 0 else x 
    return lazy  

>>> power(lambda x:x*2,3)(9) 
72 
>>> power(lambda x:x*2,2)(9) 
36 
>>> power(lambda x:x*2,1)(9) 
18 
>>> power(lambda x:x*2,0)(9) 
9 
및 방법 :

def powerize(n): 
    def wrapped(func): 
     def newfunc(*args): 
      return power(func,n)(*args) 
     return newfunc 
    return wrapped 

@powerize(3) 
def double_3(x): 
    return x*2 

>>> double_3(8) 
64 
관련 문제