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


Posted in Python onApril 30, 2019

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

#!/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、装饰器修饰有参数函数

#高阶函数+嵌套函数==>装饰器
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、装饰器修饰多个函数,有的函数带参数,有的函数不带参数的情况(采用参数组)

#高阶函数+嵌套函数==>装饰器
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相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

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

Python 相关文章推荐
在Python程序中进行文件读取和写入操作的教程
Apr 28 Python
python使用PyGame模块播放声音的方法
May 20 Python
Python 的内置字符串方法小结
Mar 15 Python
对python requests发送json格式数据的实例详解
Dec 19 Python
Python hashlib模块加密过程解析
Nov 05 Python
opencv设置采集视频分辨率方式
Dec 10 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
Python自动化操作实现图例绘制
Jul 09 Python
python下载的库包存放路径
Jul 27 Python
python如何制作缩略图
Apr 30 #Python
Python3.5装饰器原理及应用实例详解
Apr 30 #Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 #Python
python制作图片缩略图
Apr 30 #Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 #Python
使用Python实现企业微信的自动打卡功能
Apr 30 #Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 #Python
You might like
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python中使用PDB库调试程序
2015/04/05 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python实现电子产品商店
2019/02/26 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
python logging设置level失败的解决方法
2020/02/19 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
python 5个实用的技巧
2020/09/27 Python
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
大二自我鉴定
2014/01/31 职场文书
安全大检查反思材料
2014/01/31 职场文书
会计学毕业生求职信
2014/06/25 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
安全教育培训制度
2015/08/06 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技