python裝飾器的使用

2021-10-14 20:54:47 字數 2178 閱讀 7091

#既不需要侵入,也不需要函式重複執行

import time

def deco(func):

starttime = time.time()

func()

endtime = time.time()

msecs = (endtime - starttime)*1000

print("time is %d ms" %msecs)

@deco

def func():

print("hello")

time.sleep(1)

print("world")

if __name__ == '__main__':

f = func #這裡f被賦值為func,執行f()就是執行func()

f()

#帶有引數的裝飾器

import time

def deco(func):

starttime = time.time()

func(a,b)

endtime = time.time()

msecs = (endtime - starttime)*1000

print("time is %d ms" %msecs)

@deco

def func(a,b):

print("hello,here is a func for add :")

time.sleep(1)

print("result is %d" %(a+b))

if __name__ == '__main__':

f = func

f(3,4)

#func()

#帶有不定引數的裝飾器

import time

def deco(func):

starttime = time.time()

func(*args, **kwargs)

endtime = time.time()

msecs = (endtime - starttime)*1000

print("time is %d ms" %msecs)

@deco

def func(a,b):

print("hello,here is a func for add :")

time.sleep(1)

print("result is %d" %(a+b))

@deco

def func2(a,b,c):

print("hello,here is a func for add :")

time.sleep(1)

print("result is %d" %(a+b+c))

if __name__ == '__main__':

f = func

func2(3,4,5)

f(3,4)

#func()

def dec1(func):  

print("1111")

def one():

print("2222")

func()

print("3333")

return one

def dec2(func):

print("aaaa")

def two():

print("bbbb")

func()

print("cccc")

return two

@dec1

@dec2

def test():

print("test test")

test()

輸出:

aaaa

1111

2222

bbbb

test test

cccc

3333

相當於執行了test=dect1(dect2(test)),此時先執行dect2(test),結果是輸出aaaa、將func指向函式test、並返回函式two,然後執行dect1(two),結果是輸出1111、將func指向函式two、並返回函式one,然後進行賦值。

python 裝飾器的使用

使用裝飾器將函式作為引數,最後再返回乙個引數,簡單來說就是在不修改原函式的 上對原函式新增新的功能。1 在原函式中新增乙個裝飾器 原函式 def sayhello print hello,world sayhello 新增裝飾器後 import functools def decorator fun...

python裝飾器的使用

在class內部,可以有屬性和方法,而外部 可以通過直接呼叫例項變數的方法來運算元據,這樣,就隱藏了內部的複雜邏輯。但是,從前面student類的定義來看,外部 還是可以自由地修改乙個例項的name score屬性 如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線 在python中,例...

Python裝飾器的使用

本文介紹的是python裝飾器 的使用,分三部分記錄裝飾器,旨在為之後複習保留學習筆記。python裝飾器在沒有改變原始函式呼叫方式的同時,在原始函式的前後增加功能,滿足開放封閉原則。目錄 1.裝飾器的固定模板 2.帶引數的裝飾器模板 3.多個裝飾器函式裝飾乙個函式 裝飾器的固定模板 def inn...