通用裝飾器;
可以裝飾任意引數的函式:(無引數也可以)
重點:1. 閉包中內部函式的引數型別
2.內部函式的返回值上
需求:給函式func1增加日誌功能(不能修改原始碼)
import time
def funcout(func):
def funcinfo(*args, **kwargs):
log(func)
return func(*args, **kwargs)
return funcinfo
# 重點!!!通用裝飾器
def log(func):
# 增加日誌功能
f = open("log.txt", mode="a", enconding="utf-8")
# time.asctime()得到函式執行時的時間
time_str = time.asctime()
# 通過函式得到函式名__name__
func_name = func.__name__
# 追加內容至txt文件
f.write(time_str + "\t" + func_name + "\n")
# 關閉文件
f.close()
@funcout
# 等同於func1 = funcout(func1)
def func1(a):
print("a = {}".format(a))
func1(10)
# a = 10
# log.txt 文件中增加了時間日誌
@funcout
def func2(a, b, c):
print(a, b, c)
return 1000
func2(10, 100, )
# 10 100
# 1000
# log.txt 文件中增加了時間日誌
python 編寫通用裝飾器
需求 假如我們需要將一些方法加入日誌,在python這時候就需要裝飾器,而每個方法的引數,返回值各不相同,這時候,我們就需要編寫乙個通用的裝飾器來將日誌引入進來 測試版 通用裝飾器 def func functionname def func in args,kwargs print 記錄日誌 re...
python 通用裝飾器,帶有引數的裝飾器,
使用裝飾器對有返回值的函式進行裝飾 def func functionname print func 1 def func in print func in 1 x functionname 儲存返回來的hahah print func in 2 return x print func 2 retu...
裝飾器之類裝飾器
外部的方法至今都玩過了,現在來思索一下的方法這麼裝飾 類方法修飾器 類的方法唯一的特殊點在於,self內部是可以呼叫的,但是在外部卻是隱藏的,那這個怎麼搞 為求穩妥,先定參修飾乙個 def godme fun def godme self,message print before fun self,...