Python|閉包、裝飾器,簡單的實例,通俗的理解

閉包和裝飾器都是屬於函數的語法範疇,是在函數定義中以另一個函數做為形參的語法機制。

1 閉包(Closurer)

閉包是定義內部函數的一種語法規則,要理解閉包,請看下面的實例:

def outer(t):

....print(t)

....def inner(i):

........return t+i

....return inner

tf1 = outer(200)

tf2 = outer(300)

print(tf1(20))

print(tf2(20))

'''

200

300

220

320'''

閉包是一種函數嵌套的機制,如上例的inner(),在inner()中引用了inner()以外、outer()以內的局部變量,而outer返回inner。

裝飾器(Decorator)

裝飾器主要是利用閉包外層函數能返回內層函數的功能,用來裝飾函數,給函數快速增加附加的功能。

def decor(f):

....def new_f(x,y):

........print('參數1為%d,參數2為%d' %(x,y))

........return f(x,y)

....return new_f

@ decor

def add(x,y):

....return x+y

print(add(5,7))

'''

參數1為5,參數2為7

12

'''

語句@ decor表示使用裝飾器來裝飾add(),實際上是執行decor(add)()。本質上就把add函數當做參數傳遞到decor函數,decor(add)返回的是new_f,add是new_f函數的一個變量。

-End-


分享到:


相關文章: