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 31 Python
Python构建网页爬虫原理分析
Dec 19 Python
python的socket编程入门
Jan 29 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
Python基于property实现类的特性操作示例
Jun 15 Python
python画一个玫瑰和一个爱心
Aug 18 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
python套接字socket通信
Apr 01 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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
php注销代码(session注销)
2012/05/31 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
php递归json类实例
2014/12/02 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
PHP反射实际应用示例
2019/04/03 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
vuex的使用步骤
2021/01/06 Vue.js
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
浅谈python多线程和队列管理shell程序
2015/08/04 Python
python实现文本文件合并
2015/12/29 Python
快速查询Python文档方法分享
2017/12/27 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
python模拟表单提交登录图书馆
2018/04/27 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
python如何快速拼接字符串
2020/10/28 Python
办理信用卡工作证明
2014/01/11 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
年终晚会主持词
2014/03/25 职场文书
领导干部对照检查材料
2014/08/24 职场文书
教师业务学习材料
2014/12/16 职场文书
红楼梦读书笔记
2015/06/25 职场文书