zoukankan      html  css  js  c++  java
  • 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--------

  • 相关阅读:
    - > 听学姐讲那过去的故事——打代码的小女孩
    - > 强烈推荐!!!
    - > 贪心基础入门讲解五——任务执行顺序
    - > 贪心基础入门讲解二——活动安排问题
    - > 贪心基础入门讲解三——活动安排问题二
    - > 贪心基础入门讲解四——独木舟问题
    django装饰器
    POJ——T2421 Constructing Roads
    洛谷——P3258 [JLOI2014]松鼠的新家
    BZOJ——1787: [Ahoi2008]Meet 紧急集合
  • 原文地址:https://www.cnblogs.com/sklhtml/p/9444336.html
Copyright © 2011-2022 走看看