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使用xlrd模块读写Excel文件的方法
May 06 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
Python如何获取系统iops示例代码
Sep 06 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
Dec 09 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
Python切片操作实例分析
Mar 16 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
实例讲解Python爬取网页数据
Jul 08 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
python实现梯度下降法
Mar 24 Python
Python Process创建进程的2种方法详解
Jan 25 Python
python基于opencv批量生成验证码的示例
Apr 28 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+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
python装饰器初探(推荐)
2016/07/21 Python
Python清空文件并替换内容的实例
2018/10/22 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
浅析NumPy 切片和索引
2020/09/02 Python
python excel多行合并的方法
2020/12/09 Python
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
服装促销活动方案
2014/02/23 职场文书
工作保证书范文
2014/04/29 职场文书
社区禁毒工作方案
2014/06/02 职场文书
销售提升方案
2014/06/07 职场文书
个人工作年终总结
2015/03/09 职场文书
导游词之长城八达岭
2019/09/24 职场文书
python使用torch随机初始化参数
2022/03/22 Python