Python3 裝飾器

閉包:

將組成函數的語句和這些語句的執行環節打包到一起所得到的對象。

當使用嵌套函數(函數中定義函數)時,閉包將捕獲內部函數執行所需的整個環境。

此外,嵌套函數可以使用被嵌套函數中的任何變量,就行普通函數中可以引用全局變量一樣。

e.g.

x=14

def f():

    x=3

    def b():

        return x
    return b

y=f()
print(y())

 

輸出:

3

 

裝飾器

對函數參數或返回值等進行加工處理,生成一個功能增強版的一個函數。

裝飾器的參數是一個函數或者類,專門針對類或者函數進行加工處理。

使用@來實現,定義裝飾器用於裝飾函數時,使用@裝飾器名稱,放在函數或類定義行前

e.g.

import time

def deco(f):
    def wrapper():
        startTime = time.time()
        f()
        endTime = time.time()
        msecs = (endTime - startTime)*1000
        print("time is %d ms" %msecs)
    return wrapper


@deco
def func():
    print("hello")

 

輸出:

hello
world
time is 1000 ms

    time.sleep(1)
    print("world")

if __name__ == '__main__':
    f = func #這裏f被賦值爲func,執行f()就是執行func()
    f()

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章