装饰器应用:
装饰器的主要作用是:打印日志,检测性能,数据库事物,url路由

应用1,生成标签

def Bold(fn):def wrapped():# 闭包,这个函数的作用就是给原来的函数增加一些功能,return "<b>" + fn() + "</b>"return wrapped# 返回的是闭包,然后再把这个新的函数的名字赋值成原来的函数名@Bolddef test():return "python"In [2]: test()
Out[2]: '<b>python</b>'

等价于

def wrapped(test):# 参数以后会是一个函数return "<b>" + test() + "</b>" # 参数实际上是一个函数def test():return "python"
# 从这里看出,装饰器最外面的函数只是为了最后函数更改名称的方便,就是把wrapped()名字改成过了test()名字
In [2]: wrapped(test)
Out[2]: '<b>python</b>'

应用2 日志函数

In[2]: def log(f):...:     def wr(*args, **kwargs):...:         print(f'call {f.__name__}() ')...:         return f(*args, **kwargs)...:     return wr...: @log...: def test():...:     pass...: test()...:
call test()

应用3 函数性能检测

In[2]: import time...: def perf(f):...:     def wr(*args, **kwargs):...:         start = time.time()...:         f(*args, **kwargs)...:         end = time.time()...:         print(f'call {f.__name__}() in {end - start}')...:     return wr...: ...: @perf...: def test(x):...:     time.sleep(2)...: test(3)...:
call test() in 2.0124034881591797

应用4 连接数据库

def link_mysql(fun):def wr(*args, **kwargs):with pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=dbname, charset=charset) as cur:fun(cur, *args, **kwargs)return wr@link_mysql
def insert_data(cur, ...):

应用5 url

url_map = {'/index': index
}def route(option): # {'k1':'v1'}def inner(func,*args, **kwargs):url_map[option['path']] = funcreturn inner#inner = wrapper({'k1':'v1'})
#@inner --> inner(index)
@route({'path':'/index'})
def index(request):pass

参考文献:
https://www.cnblogs.com/yuzhanhong/p/9180212.html
https://zhuanlan.zhihu.com/p/35219750

python 装饰器应用相关推荐

  1. python简单装饰器_简单介绍Python装饰器(一)

    装饰器的作用 相信大家在 探索过程中已经了解装饰器的作用,也有很多花里胡哨的介绍. 这次小冰也来讲解一下关于Python装饰器的一些小知识. 它的作用: 性能测试 日志 安全验证 ...... 相信大 ...

  2. Python装饰器的神奇功能:自动打印每个方法耗时

    问题: 运行代码时,尤其对于大型项目需要分析每个环节方法耗时的.每个方法前后都写计算耗时及日志打印太繁琐了,而且代码不精简. 解决: Python装饰器类似于Spring的 AOP(Aspect Or ...

  3. python装饰器教学_Python装饰器学习(九步入门)

    这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次 ...

  4. 简单介绍python装饰器

    这篇文章简单介绍一下python装饰器,希望对你们有所帮助. 简单正常python例子: def up(text):return text.upper() #转成大写 def lo(text):ret ...

  5. Python装饰器是什么?使用Python装饰器实现计算程序(函数)运行时间的功能

    Python装饰器是什么?使用Python装饰器实现计算程序(函数)运行时间的功能 目录

  6. python 装饰器示例

    python 装饰器示例 import timedef decorator(func): # 传函数def wrapper(*args, **kwargs): # 传参数(也可以传固定参数)start ...

  7. [转]python 装饰器

    以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行时间是多少,这时候你可以修改之前代码为它加上计时的功能,但是这样的话是不是还要大体读读 ...

  8. python装饰器与闭包_Python 装饰器和闭包

    Python 装饰器和闭包 装饰器是 Python 中常见的语法糖,这篇文章讲了闭包和装饰器的原理,并且分析了函数中变量的作用域,以及尝试总结了常见的坑. 装饰器基础 首先来看看装饰器的定义:装饰器本 ...

  9. 利用世界杯,读懂 Python 装饰器

    Python 装饰器是在面试过程高频被问到的问题,装饰器也是一个非常好用的特性, 熟练掌握装饰器会让你的编程思路更加宽广,程序也更加 pythonic. 今天就结合最近的世界杯带大家理解下装饰器. 德 ...

  10. Python 装饰器记录总结 (终极版)

    Python 装饰器记录总结 (终极版) 原文链接:http://magicroc.com/2017/04/10/Python装饰器记录总结/ 装饰器是一个函数,一个用来包装函数的函数,装饰器在函数申 ...

最新文章

  1. 拿下赌场新客户,但马斯克“超级隧道”何时才能颠覆地面交通?
  2. 【线上分享】安防视频上云趋势、痛点,华为云视频接入服务探索及实践
  3. Segment,Path,Ring和Polyline对象
  4. 串口服务器端口配置及调试的6大技巧
  5. 基于plotly数据可视化_[Plotly + Datashader]可视化大型地理空间数据集
  6. linux 高性能日志,linux日志系统
  7. 杨超越吧编程大赛;拼多多刷单?苹果新员工一半没本科学历 | 极客头条
  8. Web开发中的弹出对话框控件介绍
  9. 【以太坊开发】发币指南--进阶篇
  10. Atitti  css   transition Animation differ区别
  11. 金庸群侠传修改器链接服务器,《金庸群侠传》6合1版修改器
  12. RecyclerView异步加载图片
  13. 因子分析 factor analysis (一 ):模型的理论推导
  14. linux 分区格式化类型,Linux分区格式化
  15. 中介分析(二): 多重中介分析
  16. 【攻防世界】十七、ics-05
  17. 深度学习——UMRL
  18. 论文发表费用怎样更省钱
  19. 山东大学计算机基础知识试题及答案,山东大学网络教育计算机应用基础课后练习题及答案...
  20. 程序员健康之——护腰指南

热门文章

  1. 48 - 算法 - leetcode 118 杨辉三角
  2. 枚举算法:求解不等式
  3. Python爬取并简单分析2024年普通高校招生专业(专业类)选考科目要求
  4. Python中提供的各种队列结构
  5. linux查看ip访问日志文件,linux分析apache日志获取最多访问的前10个IP
  6. test函数java,js中test()函数在正则中使用
  7. html里content标签作用,HTML content 标签
  8. php 上传文件工具类,PHP 图片上传工具类(支持多文件上传)
  9. python paramiko并发_Python之paramiko
  10. 监控程序必须要放到服务器上进行吗?_五大最佳开源java性能监控工具,你知道几个?...