執行函式的時候* 打散
定義函式的時候* 聚合
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...