python装饰器练习题及答案


Posted in Python onNovember 01, 2019

这篇文章主要介绍了python装饰器练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一:编写装饰器,为多个函数加上认证的功能(用户的账号密码)

要求登录成功一次,后续的函数都无需输入用户名和密码

FLAG=False#此时还未登录 全局变量 写这个步骤的意义在于:方便 知道已经登录成功了,就不再重复登录

def login(func):#为多个函数加上的认证功能
  def inner(*args,**kwargs):#加上装饰器
    global FLAG#给函数内的全局变量赋值
    if FLAG:
      ret = func(*args, **kwargs) # func就是被装饰的函数
      return ret
  #'''写登录程序'''
    else:
      username=input('亲输入你的名字:')
      password=input('亲输入你的密码:')
      if username=='lxx' and password=='123':
        FLAG=True
        ret=func(*args,**kwargs)   #func就是被装饰的函数
        return ret
      else:
        print('错误,登录失败')
  return inner

@login
def shoplist_add(): #两个函数有不同的功能
  print('增加一件物品')

@login
def shoplist_del():
  print('删除一件物品')

shoplist_add()
shoplist_del()

二:编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件

def log(func):
  def inner(*args,**kwargs):
    with open('log','a',encoding='utf-8') as f:
      f.write(func.__name__)#每次调用函数都将被调用的函数名称写入文件
    ret=func(*args,**kwargs)
    return ret
  return inner

@log
def shoplist_add(): #两个函数有不同的功能
  print('增加一件物品')

@log
def shoplist_del():
  print('删除一件物品')

shoplist_add()
shoplist_del()

三:进阶作业:

1.编写下载网页内容的函数,要求功能是:用户传入一个URL,函数返回下载页面的结果

2.为题目一编写装饰器,实现缓存网页内容的功能

3.具体:实现下载的页面存放与文件中,如果文件内有值(文件大小不为零),就优先从文件中读取网页内容

import os
from urllib.request import urlopen
def cache(func):
  def inner(*args,**kwargs):
    if os.path.getsize('log'):#查看文件大小 如果不为零为 判断文件中是否有内容
      with open('log','rb') as f:
        return f.read()
    ret=func(*args,**kwargs)#请求网页的函数
    with open('log','wb') as f: #wb不需要encoding='utf-8'
      f.write(b'****vfd**' + ret) #下载的页面存放在文件中 将请求的结果写入文件
    return ret
  return inner

@cache
def get(url):
  code=urlopen(url).read
  return code

ret=get('https://shimo.im/docs/VN0BLgAIBdMVSa4S/read')
print(ret)
ret=get('https://shimo.im/docs/VN0BLgAIBdMVSa4S/read')
print(ret)
ret=get('https://shimo.im/docs/VN0BLgAIBdMVSa4S/read')
print(ret)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python动态加载变量示例分享
Feb 17 Python
python单线程实现多个定时器示例
Mar 30 Python
python的类方法和静态方法
Dec 13 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 Python
Django框架HttpRequest对象用法实例分析
Nov 01 #Python
Django框架HttpResponse对象用法实例分析
Nov 01 #Python
Django框架序列化与反序列化操作详解
Nov 01 #Python
redis数据库及与python交互用法简单示例
Nov 01 #Python
python验证码图片处理(二值化)
Nov 01 #Python
使用matlab或python将txt文件转为excel表格
Nov 01 #Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 #Python
You might like
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
PHP中的integer类型使用分析
2010/07/27 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
php实现文件上传基本验证
2020/03/04 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
vue中created和mounted的区别浅析
2019/08/13 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
解析Python中的__getitem__专有方法
2016/06/27 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python