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读写Excel文件的实例
Nov 01 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
Nov 09 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
Python异常的检测和处理方法
Oct 26 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
python range实例用法分享
Feb 06 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
python GUI计算器的实现
Oct 09 Python
python des,aes,rsa加解密的实现
Jan 16 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
PHP类的特性实例分析
2016/09/28 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
使用zrender.js绘制体温单效果
2019/10/31 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python中 logging的使用详解
2017/10/25 Python
python实现数据分析与建模
2019/07/11 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
numpy库reshape用法详解
2020/04/19 Python
python 追踪except信息方式
2020/04/25 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
索尼巴西商店:Sony巴西
2019/06/21 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
信息管理应届生求职信
2014/03/07 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
2015年中秋寄语
2015/07/31 职场文书
辅导员学期工作总结
2015/08/14 职场文书
安全责任协议书范本
2016/03/23 职场文书