通用裝飾器

2021-09-25 07:31:12 字數 981 閱讀 4515

通用裝飾器;

可以裝飾任意引數的函式:(無引數也可以)

重點: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,...