1. 程式人生 > >python 通用裝飾器,帶有參數的裝飾器,

python 通用裝飾器,帶有參數的裝飾器,

func == nbsp cti none 結果 能夠 參數 %s

# 使用裝飾器對有返回值的函數進行裝飾
# 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 通用裝飾器,帶有參數的裝飾器,