python 装饰器(1)

# 装饰器,对一个函数打扮

# def foo():
# print("foo")
# foo
# foo()
# def test1():
# print('-----1-----')
# def test1():
# print('-----2-----')
# test1()

# 需求来了

# 开放封闭规则
# 封闭:以实现的功能代码块
# 开放:对扩展开放

# 语法糖
# def w1(func):
  # def inner():
    # # 验证1
    # # 验证2
    # # 验证3
    # func()
  # return inner

# @w1
# def f1():
  # print('1111111')

# @w1
# def f2():
  # print('2222222')

# @w1
# def f3():
  # print('3333333')


def w1(func):
  def inner():
    print("----正在验证权限-----")
    func()
  return inner

def f1():
  print('------f1--------')

def f2():
  print('------f2--------')


# innerFunc = w1(f1)
# innerFunc()

# innerFunc = w1(f2)
# innerFunc()

f1 = w1(f1)
f1()

# 2----------
# def w1(func):
  # def inner():
    # print("----正在验证权限-----")
    # if False:
      # func()
    # else:
      # print("没有权限")
  # return inner

# @w1 # f1 = w1(f1)
# def f1():
  # print('------f1--------')

# @w1
# def f2():
  # print('------f2--------')


# f1()
# print('---------------------')
# f2()

# 再议装饰器
# def makeBold(fn):
# def wrapped():
# print('---------1-------------')
# return "<b>"+ fn() +"</b>"
# return wrapped

# def makeTtalic(fn):
# def wrapped():
# print('---------2-------------')
# return "<i>"+ fn() +"</i>"
# return wrapped

# # 装饰器从下往上装,调用从上往下调用
# @makeBold
# @makeTtalic
# def test3():
# print('---------3-------------')
# return 'hello world-3'

# ret = test3()
# # ---------1-------------
# # ---------2-------------
# # ---------3-------------

# print(ret)
# # ---------1-------------
# # ---------2-------------
# # ---------3-------------
# # <b><i>hello world-3</i></b>

# 装饰器什么时候进行装饰
def w1(func):
  print("--正在装饰1-----")
  def inner():
    print("----正在验证权限1-----")
    func()
  return inner

def w2(func):
  print("--正在装饰2-----")
  def inner():
    print("----正在验证权限2-----")
    func()
  return inner

# 只要python解释器执行到了这个代码,那么就会自动的进行装饰,而不是等调用的时才装时的
@w1
@w2
def f1():
  print('------f1--------')

# --正在装饰-----

# 再调用之前已经装饰好了
f1()

# --正在装饰2-----
# --正在装饰1-----
# ----正在验证权限1-----
# ----正在验证权限2-----
# ------f1--------

猜你喜欢

转载自www.cnblogs.com/sklhtml/p/9444336.html