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实现ip查询示例
Mar 26 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
Django框架自定义模型管理器与元选项用法分析
Jul 22 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
Python实现图片识别加翻译功能
Dec 26 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
Python函数__new__及__init__作用及区别解析
Aug 31 Python
python boto和boto3操作bucket的示例
Oct 30 Python
python中K-means算法基础知识点
Jan 25 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
PHP中的extract的作用分析
2008/04/09 PHP
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
javascript 打印页面代码
2009/03/24 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
python smtplib发送带附件邮件小程序
2018/05/22 Python
python实现简单五子棋游戏
2019/06/18 Python
python实现共轭梯度法
2019/07/03 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
中级会计职业生涯规划书
2014/03/01 职场文书
和解协议书
2014/04/16 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
民事调解协议书
2016/03/21 职场文书