4道Python装饰器练习题
一:编写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装饰器练习题相关推荐
- python练习题及答案-python装饰器练习题及答案
这篇文章主要介绍了python装饰器练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一:编写装饰器,为多个函数加上认证的功能(用户的账号 ...
- Python装饰器详解,详细介绍它的应用场景
装饰器的应用场景 附加功能 数据的清理或添加: 函数参数类型验证 @require_ints 类似请求前拦截 数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改 为函数提供额外的数据 ...
- python装饰器原理-python装饰器的原理和使用
一.最简单的装饰器 装饰器是python中很基础也很实用的一个特性.通过装饰器我们可以很方便地为一些函数添加相同的功能.我们以测量函数运行时间为例来讲一讲python装饰器的运行原理. 1.使用装饰器 ...
- python装饰器-python装饰器是哪个版本支持的
python装饰器是哪个版本支持的 **kwargs): print ' % (unction.__name__:@app.route(':import unctoolsde log(text=&am ...
- Python 装饰器初探
Python 装饰器初探 在谈及Python的时候,装饰器一直就是道绕不过去的坎.面试的时候,也经常会被问及装饰器的相关知识.总感觉自己的理解很浅显,不够深刻.是时候做出改变,对Python的装饰器做 ...
- 深入理解python装饰器
前言 你学习python的时候一定也遇到了装饰器,但是很多学习教程对装饰器的解释都是绕来绕去的,把初学者都给绕的云里雾里,我想读者你一定有类似的经历对吧?不过不要着急,只要你仔细用心的观看我这篇文章之 ...
- python简单装饰器_简单介绍Python装饰器(一)
装饰器的作用 相信大家在 探索过程中已经了解装饰器的作用,也有很多花里胡哨的介绍. 这次小冰也来讲解一下关于Python装饰器的一些小知识. 它的作用: 性能测试 日志 安全验证 ...... 相信大 ...
- Python装饰器的神奇功能:自动打印每个方法耗时
问题: 运行代码时,尤其对于大型项目需要分析每个环节方法耗时的.每个方法前后都写计算耗时及日志打印太繁琐了,而且代码不精简. 解决: Python装饰器类似于Spring的 AOP(Aspect Or ...
- python装饰器教学_Python装饰器学习(九步入门)
这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次 ...
最新文章
- 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
- linux kernel makefile analysis
- 初识OneNote 2016
- 校招 | 第四范式 Plan1956 招募计划正式开启!
- 小米笔记本服务器系统,小米笔记本Pro GTX版
- 正则表达式的20个小应用
- vue中@符号表示什么意思?
- linux中su命令源码,Linux-命令-su
- 关于Sql语句的心得体会
- A cycle was detected in the build path of project
- ASP.NET MVC one view bind many model
- C# winform程序防止前台卡死
- 【clickhouse】Clickhouse的MySQL引擎同步数据不准确 Decimal
- Unity3D使用经验总结 编辑器扩展篇【转】
- Linux把日志文件转换成xml,[转载]将 HTML 文件转换成 XML
- python地图热力图是什么意思_python热力图
- [luogu P4197] Peaks 解题报告(在线:kruskal重构树+主席树 离线:主席树+线段树合并)...
- win7更改计算机名后桌面壁纸,win7系统电脑壁纸自动改变被恶意篡改的解决方法...
- RAID1与RAID0的区别
- 外卖优惠券小程序源码,美团外卖,饿了么外卖红包