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获取网页状态码示例
Mar 30 Python
Python操作列表之List.insert()方法的使用
May 20 Python
python实现批量下载新浪博客的方法
Jun 15 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
Python实现App自动签到领取积分功能
Sep 29 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
python全局变量引用与修改过程解析
Jan 07 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
浅谈Python3中print函数的换行
Aug 05 Python
python 模拟登陆github的示例
Dec 04 Python
pandas中DataFrame重置索引的几种方法
May 24 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
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
smarty模板数学运算示例
2016/12/11 PHP
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
微信小程序 五星评分的实现实例
2017/08/04 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
JS数组去重的6种方法完整实例
2018/12/08 Javascript
vue实现登录拦截
2020/06/29 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
python requests.get带header
2020/05/05 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
精彩的大学生自我评价
2013/11/17 职场文书
土木工程师岗位职责
2013/11/24 职场文书
本科毕业生自荐信
2014/05/26 职场文书
外贸英文求职信范文
2015/03/19 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
2015教师节通讯稿
2015/07/20 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
家访教师心得体会
2016/01/23 职场文书
redis限流的实际应用
2021/04/24 Redis