• 装饰器,装饰器多参数的使用(*arg, **kwargs),装饰器的调用顺序


    一、#1.执行outer函数,并且将其下面的函数名,当作参数
      #2、将outer的返回值重新赋值给f1 = outer的返回值
      #3.新f1 = inner
      #4.func = 原f1
     1 #!/usr/bin/env python
     2 def outer(func) :
     3     def inner() :
     4         print("hello")
     5         print("hello")
     6         print("hello")
     7         r = func()
     8         print("end")
     9         print("end")
    10         print("end")
    11         return  r
    12     return inner
    13 @outer
    14 def f1() :
    15     print("F1")
    16 #1.执行outer函数,并且将其下面的函数名,当作参数
    17 #2、将outer的返回值重新赋值给f1 = outer的返回值
    18 #3.新f1 = inner
    19 f1()

    二、装饰器多参数的使用(*arg, **kwargs)

     1 #!/usr/bin/env python
     2 def oute(func) :
     3     """
     4 
     5     :param func:
     6     :return:
     7     """
     8     def inner(*arg, **kwargs) :
     9         print("abvc")
    10         r = func(*arg, **kwargs)
    11         print("456")
    12         return r
    13     return inner
    14 @oute
    15 def outer(func) :
    16     def inner(*arg, **kwargs) :
    17         print("123")
    18         r = func(*arg, **kwargs)
    19         print("789")
    20         return r
    21     return inner
    22 # @oute
    23 @outer
    24 
    25 def f1(a1, a2) :
    26     print("321")
    27 def f2(a1, a2) :
    28     print("dfas")
    29 f1(1,2)

    结果为:

    abvc
    456
    123
    321
    789

     1 #!/usr/bin/env python
     2 def oute(func) :
     3     """
     4 
     5     :param func:
     6     :return:
     7     """
     8     def inner(*arg, **kwargs) :
     9         print("abvc")
    10         r = func(*arg, **kwargs)
    11         print("456")
    12         return r
    13     return inner
    14 # @oute
    15 def outer(func) :
    16     def inner(*arg, **kwargs) :
    17         print("123")
    18         r = func(*arg, **kwargs)
    19         print("789")
    20         return r
    21     return inner
    22 @oute
    23 @outer
    24 
    25 def f1(a1, a2) :
    26     print("321")
    27 def f2(a1, a2) :
    28     print("dfas")
    29 f1(1,2)

    结果为:

    abvc
    123
    321
    789
    456

     
  • 相关阅读:
    最大比例(压轴题 )
    HDU-1016-素数环
    HDU-1241-油藏
    POJ-2251-地下城
    UVa-12096-集合栈计算机
    UVa-156-反片语
    UVa-10815-安迪的第一个字典
    UVa-101-木块问题
    UVa-10474-大理石在哪
    HDU-2955-Robberies
  • 原文地址:https://www.cnblogs.com/shiluoliming/p/6354257.html
Copyright © 2020-2023  润新知