装饰器的简单理解:

装饰器本质上是一个callable object,它可以在让其他函数在不需要做任何代码的变动的前提下增加额外的功能。

装饰器的应用场景:

装饰器的返回值也是一个函数的对象,它经常用于以下的场景。比如:插入日志,性能测试,事务处理,缓存。权限的校验等场景,有了装饰器就可以抽离出大量的与函数功能本身无关的雷同代码并发并继续使用。

举例1:

编写一个带定长参数的装饰器:

def new_func(func):def wrappedfun(username, passwd):if username == 'root' and passwd == '123456789':print('通过认证')print('开始执行附加功能')return func()else:print('用户名或密码错误')returnreturn wrappedfun@new_func
def origin():print('开始执行函数')
origin('root','123456789')

运行结果:

通过认证
开始执行附加功能
开始执行函数

举例2:

带不定长参数的装饰器

def new_func(func):def wrappedfun(*parts):if parts:counts = len(parts)print('本系统包含 ', end='')for part in parts:print(part, ' ',end='')print('等', counts, '部分')return func()else:print('用户名或密码错误')return func()return wrappedfun

举例3:

写出一个计时器记录方法执行性能的装饰器

import time
from functools import wraps
def time_this_function(func):#作为装饰器使用,返回函数执行需要花费的时间@wraps(func)def wrapper(*args,**kwargs):start=time.time()result=func(*args,**kwargs)end=time.time()print(func.__name__,end-start)return resultreturn wrapper
if __name__=='__main__':@time_this_functiondef count_number(n):while n>0:time.sleep(0.1)n+=-1count_number(10)

运行结果:

count_number 1.0461959838867188

Python中装饰器的理解和实现相关推荐

  1. python中装饰器修复技术_python3之装饰器修复技术@wraps

    普通函数 def f(): """ 这是一个用来测试装饰器修复技术的函数 """ print("哈哈哈") if __n ...

  2. python装饰器使用教学,Python教程|简单上手Python中装饰器的使用

    如何打造极简主义风格网站教程 .极简主义与其他设计风格<极简主义设计之美> 这篇文章的一部分是讲极简主义是如何与其他设计风格很好配合的.可以把极简主义当作一种属性,而它可以添加或结合其他. ...

  3. 8.Python中装饰器是什么?

    Python中装饰器是什么? A Python decorator is a specific change that we make in Python syntax to alter functi ...

  4. python中装饰器的作用_如何理解Python装饰器

    展开全部 理解Python中的装饰器 @makebold @makeitalic def say(): return "Hello" 打印出如2113下的输出: Hello 你会怎 ...

  5. python中装饰器的作用_Python装饰器详解,详细介绍它的应用场景

    装饰器的应用场景附加功能 数据的清理或添加:函数参数类型验证 @require_ints 类似请求前拦截数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改为函数提供额外的数据 moc ...

  6. python中装饰器修复技术_12步轻松搞定Python装饰器

    作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数相关语 ...

  7. python装饰器原理wraps(method)(self)_理解Python中装饰器最佳方法~

    了解装饰器之前, 可以先了解一下什么是闭包的概念为好: 闭包, 是指在一个函数中定义了一个另外一个函数,内函数里运用了外函数的临时变量(实际参数也是临时变量),并且外函数的返回值是内函数的引用(一切皆 ...

  8. python中装饰器的使用教程详解(wraps)

    先看下面的函数简单理解一下 示例代码: import loggingdef use_logging(func):logging.error("%s is running" % fu ...

  9. python中装饰器的作用_Python中装饰器的用法

    装饰器的作用 当我们需要为函数拓展新的功能,但是又不能修改函数的内部结构时,就可以通过装饰器来完成.通过装饰器为函数拓展功能符合"对于扩展是开放的,对于修改是封闭的"这一开闭原则. ...

最新文章

  1. 全球气候变迁 物联网技术为农业保驾护航
  2. matlab中if语句的用法_if语句的基本用法
  3. js输出一个菱形_Webpack 4入口、输出和ES6模块
  4. 关于Java中何时使用static和工具类相关知识
  5. STRUTS模拟试题
  6. 图形工具包 linux,GTK 4.0图形工具包正式发布:时隔四年的重大版本!
  7. 精通开关电源设计第二版pdf_11、秋招年35月准备期——Verilog HDL高级数字设计(第二版)...
  8. java期末考试编程题 界面_救急啊!!!期末考试!怎样用JAVA的GUI(图形用户界面)来设计一个小程序!...
  9. 导航栏使用引导、下载资源支持试读、CSDN年终重磅福利来袭……
  10. sqli-labs(24)
  11. hosts 下载 android
  12. Java万年显示和查询_Java 万年历
  13. 数字电视 frontend tuner demod
  14. 小白系统盘制作详细教程
  15. VBS对Excel导入bas宏文件
  16. Xilinx FPGA器件的速度等级
  17. postgresql分割字符串_PostgreSQL 字符串拆分与合并案例
  18. 三、T100应付管理之采购应付-入库应付管理篇
  19. 《神经网络与深度学习》中文版推荐
  20. Python3断网离线安装依赖包

热门文章

  1. SpringBoot 配置错误页
  2. 抽屉效果_宜家靠边,好用不贵的全格收纳抽屉使用感受
  3. enum的介绍以及和#define的区别
  4. Linux下区分物理CPU、逻辑CPU和CPU核数
  5. 实践 | 不同行业WMS选型策略及需要注意的一些问题
  6. Jenkins + Gitlab + Ansible--playbook 代码上线流程
  7. Random随机数相关工具类
  8. python 包管理和virturlenv
  9. Cisco SSL ×××
  10. 中石油训练赛 - 奎奎发红包(贪心)