2014-04-05 179 views
0

函數內部是否可以嵌套函數?如果是這樣,它有什麼目的?我下面有一些示例代碼來展示我的意思。函數內部的嵌套函數

def theFunction(): 
    print "This is a function" 
    def functionception(): 
     print "Bad inception joke...." 

再次,這是可能的嗎?如果是這樣,它的用途是什麼,它是如何使用的?

+1

是啊,他們是所謂的裝飾。 –

+2

不,不錯,是的,你可以做到,但他們不叫裝飾者。 – kindall

+0

重新提到這個問題,因爲有人在學習Python,我也一直在想這件事,並發現答案有用和簡潔。 – TooTone

回答

2

是這是可能的,裝潢等功能時被頻繁使用,例如

def memo(f): 
    cache = {} 
    def func(*args): 
     if args not in cache: 
      cache[args] = f(*args) 
     return cache[args] 
    return func 

實例:

@memo 
def memoized_func(some_arg): 
    return some_arg ** 2 

這裏內部功能func用於包裝參數函數f,提供額外的功能(在這種情況下保存以前的計算結果)。