zoukankan      html  css  js  c++  java
  • 装饰器,装饰器多参数的使用(*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

     
  • 相关阅读:
    Logstash 安装并把mysql数据同步到elasticsearch
    springboot 集成elasticsearch
    centos7 搭建Elasticsearch集群
    centos7 elasticsearch 安装
    elasticsearch 深度分页以及scroll 滚动搜索
    elasticsearch DSL常用查询总结
    elasticsearch ik分词器自定义词库
    elasticsearch 安装IK中文分词器
    elasticsearch 分词与内置分词器
    elasticsearch 文档乐观锁控制 if_seq_no与if_primary_term
  • 原文地址:https://www.cnblogs.com/shiluoliming/p/6354257.html
Copyright © 2011-2022 走看看