您的位置:首页 > 脚本大全 > > 正文

12步轻松搞定python装饰器(Python3.5装饰器典型案例分析)

更多 时间:2021-10-09 00:18:54 类别:脚本大全 浏览量:533

12步轻松搞定python装饰器

Python3.5装饰器典型案例分析

本文实例讲述了python3.5装饰器。分享给大家供大家参考,具体如下:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • #!/usr/bin/env python
  • # -*- coding:utf-8 -*-
  • # author:zhengzhengliu
  • #高阶函数+嵌套函数==>装饰器
  • import time
  • def timer(func):    #timer(test1)-->func=test1
  •   def decor():
  •     start_time = time.time()
  •     func()     #run test1
  •     stop_time = time.time()
  •     print("the run time of func is %s" %(stop_time-start_time))
  •   return decor
  • @timer   #test1 = timer(test1)
  • def test1():
  •   time.sleep(3)
  •   print("in the test1")
  • @timer   #test2 = timer(test2)
  • def test2():
  •   time.sleep(3)
  •   print("in the test2")
  • print(timer(test1))     #打印deco的地址
  • #test1 = timer(test1)
  • #test2 = timer(test2)
  • test1()  #-->执行decor
  • test2()
  • 运行结果:

    <function timer.<locals>.decor at 0x00b720c0>
    in the test1
    the run time of func is 3.000171661376953
    in the test2
    the run time of func is 3.000171661376953

    1、装饰器修饰有参数函数

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • #高阶函数+嵌套函数==>装饰器
  • import time
  • def timer(func):    #timer(test1)-->func=test1
  •   def decor(arg1,arg2):
  •     start_time = time.time()
  •     func(arg1,arg2)     #run test2
  •     stop_time = time.time()
  •     print("the run time of func is %s" %(stop_time-start_time))
  •   return decor
  • @timer   #test2 = timer(test2) = decor  test2(name)==>decor(name)
  • def test2(name,age):
  •   print("test2:",name,age)
  • test2("liu",23)
  • 运行结果 :

    test2: liu 23
    the run time of func is 0.0

    2、装饰器修饰多个函数,有的函数带参数,有的函数不带参数的情况(采用参数组)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • #高阶函数+嵌套函数==>装饰器
  • import time
  • def timer(func):    #timer(test1)-->func=test1
  •   def decor(*args,**kwargs):
  •     start_time = time.time()
  •     func(*args,**kwargs)     #run test1
  •     stop_time = time.time()
  •     print("the run time of func is %s" %(stop_time-start_time))
  •   return decor
  • @timer   #test1 = timer(test1)
  • def test1():
  •   time.sleep(3)
  •   print("in the test1")
  • @timer   #test2 = timer(test2) = decor  test2(name)==>decor(name)
  • def test2(name,age):
  •   time.sleep(1)
  •   print("test2:",name,age)
  • #test1 = timer(test1)
  • #test2 = timer(test2)
  • test1()  #-->执行decor
  • test2("liu",23)
  • 运行结果:

    in the test1
    the run time of func is 3.0036065578460693
    test2: liu 23
    the run time of func is 1.0084023475646973

    希望本文所述对大家python程序设计有所帮助。

    原文链接:https://blog.csdn.net/loveliuzz/article/details/77878019