这篇文章主要介绍了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装饰器练习题及答案相关推荐

  1. python function at 0x00000_Python函数装饰器原理与用法详解

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  2. python log函数_python要点-装饰器

    大家有没有碰到过这种需求,扩展公司的历史项目,对功能进行扩展?拿到历史项目看源码的时候是不是头特别大,难上加难的是还要对其进行修改!!!今天要讲的是python中的重要功能-装饰器,其对满足前述的实现 ...

  3. python中高阶函数和装饰器_三.Python高阶函数和装饰器

    1高阶函数 1.1 数学概念回顾下数学知识: y=f(x) 这是最开始接触的普通函数 y=g(f(x)) 这个就是我们接触到的高阶函数 在数学和计算机科学中,高阶函数至少应当是满足下面一个条件的函数: ...

  4. python中的无参装饰器和有参装饰器

    python中的无参装饰器和有参装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 装饰器特点: 1>.开放封闭原则,即对扩展是开放的,对修改时封闭的: 2>.装饰器 ...

  5. Python 学习笔记9(装饰器,decorator)

    Python 学习笔记9(装饰器,decorator) 31 装饰器 装饰器可以对一个函数.方法或者类进行加工,是一种高级的python语法. 装饰函数 接收一个可调用对象作为输入参数,并返回一个新的 ...

  6. 十一. Python基础(11)—补充: 作用域 装饰器

    十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...

  7. python中高阶函数和装饰器_Python高阶函数与装饰器函数的深入讲解

    本文主要介绍的是Python高阶函数与装饰器函数的相关内容,分享给大家,下面话不多说了,来一起看看详细的介绍吧 高阶函数 1.可以使用函数对象作为参数的函数 2.或可以将函数作为返回值的函数 3.函数 ...

  8. Python练习之函数,装饰器,面向对象

    Python练习之函数,装饰器,面向对象 1.函数 2 装饰器 3.面向对象 1.函数 编写函数,实现接受一个字符串,分别统计大小写字母,数字,其他字符的个数,并返回结果 #方法一 str=input ...

  9. python 三个内置装饰器,python中自带的三个装饰器

    说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @propert ...

最新文章

  1. 跳跃游戏(判断是否可以跳到最后一个下标)
  2. Centos6.4_X64飞信安装
  3. 程序员面试什么最重要?
  4. HTML阅读打开点击不了,如何让网页文章中的代码可以点击运行
  5. 【Spring源码】AOP切面源码
  6. 【java】Java中TypeReference用法说明
  7. 云服务器磁盘扩容后不显示,腾讯云服务器磁盘扩容问题小记
  8. RH850 问题及解决方案
  9. 百万用户同时在线游戏服务器架构实现.doc 基于epoll 通信模型
  10. 身份证ocr识别开源方案_多因素身份验证的开源替代方案:privacyIDEA
  11. 【论文阅读】TomoAlign: A novel approach to correcting sample motion and 3D CTF in CryoET
  12. Leetcode 1134:阿姆斯特朗数(超详细的解法!!!)
  13. 嵌入式linux开发04-roottfs移植
  14. 10、第二章物理层习题及参考答案
  15. 往后余生的计算机音乐,纯音乐《飞翔的梦》 往后余生,与你同行
  16. 链脉AI智能电子名片,让交际更有效
  17. java解析excel,poi和easyExcel
  18. 利用Python做一个简单的对战小游戏
  19. 超分辨率图像重建-拉普拉斯金字塔(laplacian pyramid)
  20. 四川省乐山市计算机学校坠楼,痛惜!四川乐山一17岁女孩坠楼身亡,强烈呼吁关注抑郁症人群...

热门文章

  1. SQL Server DATEADD() 当前时间减7小时
  2. BZOJ4458: GTY的OJ
  3. 关于内存对齐介绍的比较好的一个文章
  4. PermutationsUnique,求全排列,去重
  5. iforums之UEditor上传图片提示【未知错误】
  6. Android ActionBar的Overlay模式如何不遮盖顶部内容的问题
  7. NSSet与NSArray区别
  8. Asp.net(C#)利用File Field多文件上传
  9. UVA474 Heads / Tails Probability【数学】
  10. MCMC:Gibbs 采样(matlab 实现)