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----‘)
# return func_in
# @func
# def test():
# print("-----test-----")
# return "haha"
# ret = test()
# print("test return value is %s"%ret)
# ---func-1----
# ---func-2----
# ----func_in---1-
# -----test-----
# ----func_in---2-
# test return value is haha
# 使用通用裝飾器對函數進行裝飾
# def func(functionName):
# def func_in(*args,**kwatgs):
# print("記錄日誌")
# x = functionName(*args,**kwatgs)
# return x
# return func_in
# @func
# def test():
# print("-----test-----")
# return "haha"
# ret = test()
# print("test return value is %s"%ret)
# # -----test-----
# # test return value is haha
# @func
# def test2():
# print("----test2----")
# a = test2()
# print(a)
# # ----test2----
# # None
# @func
# def test3(a):
# print("-----test3----a=%d"%a)
# test3(10)
# -----test3----a=10
# 記錄日誌
# -----test-----
# test return value is haha
# 記錄日誌
# ----test2----
# None
# 記錄日誌
# -----test3----a=10
# 帶有參數的裝飾器、、
def func_arg(arg):
print(arg)
def func(functionName):
print(‘----func----‘)
def func_in():
print("--記錄日誌---")
print(arg)
if arg==‘呵呵‘:
functionName()
functionName()
else:
functionName()
return func_in
return func
# 1.先執行func_arg(‘呵呵‘)函數,這個函數return的結果是func這個函數的引用
# 2.@func
# 3.使用@func對test進行裝飾
# 帶有參數的裝飾器,能夠起到在運行時,有不同的功能
@func_arg(‘呵呵‘)
def test():
print("-----test-----")
ret = test()
# 呵呵
# ----func----
# --記錄日誌---
# -----test-----
@func_arg("haha")
def test2():
print("--test2--")
test2()
# haha
# ----func----
# --記錄日誌---
# haha
# --test2--
python 通用裝飾器,帶有參數的裝飾器,