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实现简单的计时器功能函数
Mar 14 Python
pygame学习笔记(4):声音控制
Apr 15 Python
python抽象基类用法实例分析
Jun 04 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
Python生成随机密码的方法
Jun 16 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
Feb 08 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
如何利用Python写个坦克大战
Nov 18 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 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中exec函数和shell_exec函数的区别
2014/08/20 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
潜说js对象和数组
2011/05/25 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
学习python (1)
2006/10/31 Python
Python映射拆分操作符用法实例
2015/05/19 Python
python通过文件头判断文件类型
2015/10/30 Python
Python实现Event回调机制的方法
2019/02/13 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
毕业实习个人鉴定范文
2013/12/10 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
离婚协议书格式
2014/11/21 职场文书
师范生小学见习总结
2015/06/23 职场文书
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技