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中的魔法方法深入理解
Jul 09 Python
python使用wxpython开发简单记事本的方法
May 20 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
python书籍信息爬虫实例
Mar 19 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
Python Web编程之WSGI协议简介
Jul 18 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
在python3.64中安装pyinstaller库的方法步骤
Jun 02 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
python开发实时可视化仪表盘的示例
May 07 Python
Python import模块的缓存问题解决方案
Jun 02 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根据图片色界在不同位置加水印的方法
2015/07/01 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
原生js实现验证码功能
2017/03/16 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
vue计算属性及使用详解
2018/04/02 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
运动会邀请函范文
2014/01/31 职场文书
我的祖国演讲稿
2014/05/04 职场文书
大气污染防治方案
2014/05/19 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
2015年女工委工作总结
2015/07/27 职场文书
PHP中->和=>的意思
2021/03/31 PHP
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers