十二 裝飾器高階

2021-09-20 05:10:51 字數 1632 閱讀 5820

執行函式的時候* 打散

定義函式的時候* 聚合

from functools import wraps

@wraps(f)

def inner(*args,**kwargs): #聚合

#args (1,2,3)

'''執行函式之前的相關操作'''

ret = f(*args,**kwargs) # 打散 1,2,3

'''執行函式之後的相關操作'''

return ret

return inner

# 函式的執行時,*打散。

# 函式的定義時,*聚合。

def func1(*args): #args (1,2,3)

print(666)

return args

print(func1(*[1,2,3])) # inner(1,3,5) 打散

列印函式有用資訊

def func1():

"""此函式是完成登陸的功能,引數分別是...作用。

:return: 返回值是登陸成功與否(true,false)

"""print(666)

return true

func1()

print(func1.__name__)

print(func1.__doc__)

#666

func1

此函式是完成登陸的功能,引數分別是...作用。

: return: 返回值是登陸成功與否(true,false)

帶引數的裝飾器

import time

def timmer(*args,**kwargs):

def inner(*args,**kwargs):

if flag:

start_time = time.time()

ret = f(*args,**kwargs)

time.sleep(0.3)

end_time = time.time()

print('此函式的執行效率%f' % (end_time-start_time))

else:

ret = f(*args, **kwargs)

return ret

return inner

flag = false

def func1():

print(666)

@timmer(flag)

def func2():

print(777)

func1()

func2()

多個裝飾器裝飾乙個函式

def inner1():

func()

return inner1

def inner2():

func()

return inner2

def f():

print('in f')

f() 再讀f()

裝飾器高階

有參 在標準裝飾器的外層,套了一層就需要額外的呼叫一程 語法糖 裝飾器 引數 帶參修飾器 while true def count a def func f def fool args,kwargs if a 1 print 這是第乙個裝飾的函式qq f args,kwargs if a 2 f a...

python高階裝飾器 Python裝飾器高階

對帶引數的函式進行裝飾 對帶引數的函式進行裝飾,內嵌包裝函式的形參和返回值與原函式相同,裝飾函式返回內嵌包裝函式物件 def deco func def deco a,b print before myfunc called.ret func a,b print after myfunc calle...

二 裝飾器高階

1 帶引數的裝飾器 import time flage false deftime out flage def timer fun def inner args,kwargs if flage start time.time ret fun args,kwargs end time.time pri...