一:编写3个函数,每个函数执行的时间是不一样的

a = time.localtime()def log_1():print('%s-%s-%s'%(a.tm_year, a.tm_mon, a.tm_mday))def log_2():time.sleep(2)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))def log_3():time.sleep(4)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))
log_1()
log_2()
log_3()
"""
2018-3-21
2018-3-21
2018-3-21
"""

二、编写装饰器,为每个函数加上统计运行时间的功能

import time
def timmer(func):def inner():start_time = time.time()func()wait_time = time.time() - start_timeprint("%s 运行时间:" % func.__name__, wait_time)return innera = time.localtime()@timmer
def log_1():print('%s-%s-%s'%(a.tm_year, a.tm_mon, a.tm_mday))
@timmer
def log_2():time.sleep(2)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))
@timmer
def log_3():time.sleep(4)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))
log_1()
log_2()
log_3()
"""
2018-3-21
log_1 运行时间: 3.0994415283203125e-05
2018-3-21
log_2 运行时间: 2.0049030780792236
2018-3-21
log_3 运行时间: 4.004503965377808
"""

三、编写装饰器,为函数加上认证的功能,即要求认证成功才能执行函数

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
user_status = False
def login(func):def inner():_username = "alex"_password = "abc!23"global user_statusif user_status is False:username = input("输入用户名:")password = input("密码:")if username == _username and password == _password:print("welcome login...")user_status = Trueelse:print("wrong username or password!")if user_status:func()return innera = time.localtime()def log_1():print('%s-%s-%s'%(a.tm_year, a.tm_mon, a.tm_mday))def log_2():time.sleep(2)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))
@login
def log_3():time.sleep(4)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))log_1()
log_2()
log_3()
"""
2018-3-21
2018-3-21
输入用户名:alex
密码:abc!23
welcome login...
2018-3-21
"""

四、编写装饰器,为多个函数加上认证功能(用户的账户密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码。

import os,timeuser_status = False
def login(func):file = os.path.exists('user_info.txt')if file is True:file = open(file='user_info.txt', mode='r+', encoding='utf-8')f = file.read()user_info = eval(f)file.close()else:file = open('user_info.txt', mode='w', encoding='utf-8')choice = input("是否注册用户?[Y/N]")if choice == 'Y' or choice == 'y':name = input("请输入新用户用户名:")password = input("请输入新用户密码:")user_info = {'name': name, 'password': password}row = str(user_info)file.write(row)file.close()def inner():_username = user_info['name']_password = user_info['password']global user_statusif user_status is False:username = input("输入用户名:")password = input("密码:")if username == _username and password == _password:print("welcome login...")user_status = Trueelse:print("wrong username or password!")if user_status:func()return innera = time.localtime()def log_1():print('%s-%s-%s'%(a.tm_year, a.tm_mon, a.tm_mday))@login
def log_2():time.sleep(2)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))@login
def log_3():time.sleep(4)print('%s-%s-%s' % (a.tm_year, a.tm_mon, a.tm_mday))log_1()
log_2()
log_3()"""
是否注册用户?[Y/N]Y
请输入新用户用户名:hqs
请输入新用户密码:123
2018-3-21
输入用户名:hqs
密码:123
welcome login...
2018-3-21
2018-3-21
"""

4道Python装饰器练习题相关推荐

  1. python练习题及答案-python装饰器练习题及答案

    这篇文章主要介绍了python装饰器练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一:编写装饰器,为多个函数加上认证的功能(用户的账号 ...

  2. Python装饰器详解,详细介绍它的应用场景

    装饰器的应用场景 附加功能 数据的清理或添加: 函数参数类型验证 @require_ints 类似请求前拦截 数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改 为函数提供额外的数据 ...

  3. python装饰器原理-python装饰器的原理和使用

    一.最简单的装饰器 装饰器是python中很基础也很实用的一个特性.通过装饰器我们可以很方便地为一些函数添加相同的功能.我们以测量函数运行时间为例来讲一讲python装饰器的运行原理. 1.使用装饰器 ...

  4. python装饰器-python装饰器是哪个版本支持的

    python装饰器是哪个版本支持的 **kwargs): print ' % (unction.__name__:@app.route(':import unctoolsde log(text=&am ...

  5. Python 装饰器初探

    Python 装饰器初探 在谈及Python的时候,装饰器一直就是道绕不过去的坎.面试的时候,也经常会被问及装饰器的相关知识.总感觉自己的理解很浅显,不够深刻.是时候做出改变,对Python的装饰器做 ...

  6. 深入理解python装饰器

    前言 你学习python的时候一定也遇到了装饰器,但是很多学习教程对装饰器的解释都是绕来绕去的,把初学者都给绕的云里雾里,我想读者你一定有类似的经历对吧?不过不要着急,只要你仔细用心的观看我这篇文章之 ...

  7. python简单装饰器_简单介绍Python装饰器(一)

    装饰器的作用 相信大家在 探索过程中已经了解装饰器的作用,也有很多花里胡哨的介绍. 这次小冰也来讲解一下关于Python装饰器的一些小知识. 它的作用: 性能测试 日志 安全验证 ...... 相信大 ...

  8. Python装饰器的神奇功能:自动打印每个方法耗时

    问题: 运行代码时,尤其对于大型项目需要分析每个环节方法耗时的.每个方法前后都写计算耗时及日志打印太繁琐了,而且代码不精简. 解决: Python装饰器类似于Spring的 AOP(Aspect Or ...

  9. python装饰器教学_Python装饰器学习(九步入门)

    这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次 ...

最新文章

  1. 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
  2. linux kernel makefile analysis
  3. 初识OneNote 2016
  4. 校招 | 第四范式 Plan1956 招募计划正式开启!
  5. 小米笔记本服务器系统,小米笔记本Pro GTX版
  6. 正则表达式的20个小应用
  7. vue中@符号表示什么意思?
  8. linux中su命令源码,Linux-命令-su
  9. 关于Sql语句的心得体会
  10. A cycle was detected in the build path of project
  11. ASP.NET MVC one view bind many model
  12. C# winform程序防止前台卡死
  13. 【clickhouse】Clickhouse的MySQL引擎同步数据不准确 Decimal
  14. Unity3D使用经验总结 编辑器扩展篇【转】
  15. Linux把日志文件转换成xml,[转载]将 HTML 文件转换成 XML
  16. python地图热力图是什么意思_python热力图
  17. [luogu P4197] Peaks 解题报告(在线:kruskal重构树+主席树 离线:主席树+线段树合并)...
  18. win7更改计算机名后桌面壁纸,win7系统电脑壁纸自动改变被恶意篡改的解决方法...
  19. RAID1与RAID0的区别
  20. 外卖优惠券小程序源码,美团外卖,饿了么外卖红包

热门文章

  1. 国内常见的电子地图坐标介绍
  2. CentOS7 下DNS的搭建
  3. Centos系统搭建LAMP
  4. “影响100活动”答记者问(二)
  5. qt串口采用队列_基于STM32的RGB调色器——STM32程序和Qt上位机全开源
  6. 【PP模块】订单分割(Order Split)
  7. 【转】ABAP的坑5
  8. MD04读取的一些计算表
  9. 数据库密码过期 怎么修改
  10. SAP HANA会代替BW吗?