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操作串口的方法
Jun 17 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
python常用知识梳理(必看篇)
Mar 23 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
Python实现字符串的逆序 C++字符串逆序算法
May 28 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
python能做哪方面的工作
Jun 15 Python
基于python实现图片转字符画代码实例
Sep 04 Python
Visual Studio code 配置Python开发环境
Sep 11 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
详解python单元测试框架unittest
2018/07/02 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
集体婚礼证婚词
2014/01/13 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
大明湖导游词
2015/02/03 职场文书
2015年复活节活动总结
2015/02/27 职场文书
聘任证明怎么写
2015/03/02 职场文书
女性励志书籍推荐
2019/08/19 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
python 下划线的多种应用场景总结
2021/05/12 Python
go web 预防跨站脚本的实现方式
2021/06/11 Golang