1 致谢

3 装饰器的形式

我们先来看看一个简单的装饰器的模板:

def decorator(func):def wrapper(*args, **kw):print('call %s():' % func.__name__)return func(*args, **kw)return wrapper

这里的decorator就是装饰器函数的名称,(这里装饰器的函数名是可以自定义的,这里我们就使用decorator,装饰器的英文单词,来作为函数名,以方便理解);

这里的wrapper函数是对被装饰的函数func的内部封装,正如其单词本身“包装者”的意思,这里包装器的函数名也是可以任意定义的,这里就使用wrapper作为函数名;

4 装饰器编程的高级技巧

这里我们用廖老师教程中的一个题目来讲述一下如何使用装饰器来编写更复杂的函数,

首先,我们来看看廖老师给出的习题,

一个实现代码是这样的:

def log(*params):if len(params) == 1 and callable(params[0]):func = params[0]else:func = Nonedef decorator(f):def wrapper(*args, **kwargs):print('%s before call' % f.__name__)ret =  f(*args, **kwargs)print('%s end call' % f.__name__)return retreturn wrapperreturn decorator(func) if func else decorator

我们来看看这段代码,callable刚开始的时候我不熟悉,我们来看看它的用法,

这里我们引用菜鸟教程中关于callable的描述,

所以callable函数可以用来判断一个对象是否是一个函数;

Python——装饰器的学习笔记(legacy)相关推荐

  1. Python——装饰器的学习笔记

    1 致谢 感谢廖雪峰老师的讲授--装饰器 - 廖雪峰的官方网站: 2 介绍:什么是装饰器 这一点我觉得HowCode这一点讲的很好, HowCode: Decorators let us extend ...

  2. 如何使用python装饰器_Python学习之如何使用装饰器 @decorator

    建议大家在看这篇文章之前还是点击上面这篇文章看一下,先了解一下什么是装饰器之后再看. 猿人学python之我的学习笔记分享:如何使用装饰器 @decorator 上面代码中使用装饰器的方法看起来有点复 ...

  3. python文件下载速度 装饰器_python学习笔记之---装饰器

    # -*- coding:utf-8 -*- '''示例1: 最简单的函数,表示调用了两次''' def myfunc(): print ("myfunc() called.") ...

  4. c++设计模式之装饰器模式 学习笔记

    装饰器模式的意义和字面意思相差不多--就是装饰的方法.比如人穿不同的衣服,在花园里栽种不同的花,游戏中的英雄带不同的装备等等.其中,人/花园/英雄是主体,是你要装备的东西:衣服/花/装备是装备物,是你 ...

  5. 一文读懂Python 装饰器函数

    [摘要] Python装饰器的学习笔记 1. 初识装饰器 接下来,我们通过一个例子来为大家讲解这个装饰器: 需求介绍:你现在xx科技有限公司的开发部分任职,领导给你一个业务需求让你完成:让你写代码测试 ...

  6. Python装饰器详解,详细介绍它的应用场景

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

  7. Python装饰器学习笔记

    Python装饰器 文章目录 Python装饰器 基本概念 从零开始的逐步分析 修饰后的问题 向被包装后的函数传递参数 使用场景:stdout日志 接受参数的装饰器 作为一个类的装饰器 总结 学习资料 ...

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

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

  9. Python装饰器学习(九步入门)

    这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- coding:gbk -*- '''示例1 ...

最新文章

  1. .net 2.0 点击按钮用js控制是否回发关于vs2005的webproject补丁
  2. SQL注入思维导图【新手全面非详细】
  3. VMware 虚拟机 1、ubuntu 扩容(扩展硬盘容量)2、修改内存大小
  4. HarmonyOS之后台代理定时提醒的功能使用
  5. CSS3动画和VUE动画整理
  6. Linux 配置LNMP服务器 并配置虚拟主机
  7. nodejs redis 发布订阅_「赵强老师」Redis的消息发布与订阅
  8. 橙子减肥法:好吃快速成为瘦美人 - 健康程序员,至尚生活!
  9. 密码学算法之 SM2国密算法
  10. XMPP即时通讯机制
  11. 读书笔记—产品型社群:互联网思维的本质
  12. 下载flash文件的若干方法!
  13. 利用数据库进行肿瘤基因的挖掘
  14. python基础:Python MySQL
  15. Logcat的操作使用方法
  16. 保护个人信息,才能享受大数据的时代成果
  17. C语言整数转字符串-递归算法
  18. html5多个图片位置_Python使用标准库zipfile提取docx文档中所有图片
  19. 怎么无法识别计算机评分,电脑阅卷,多少孩子吃亏在字上?电脑根本识别不了!...
  20. 【转】Oracle在线重定义DBMS_REDEFINITION 普通表—分区表

热门文章

  1. 配置跳转指定_http自动跳转https的配置方法
  2. tps波动很大的原因_期货揭秘:价格的波动规律(2)
  3. 帆软报表-打印sql日志设置
  4. 使用Apriori算法和FP-growth算法进行关联分析
  5. int与string互转
  6. 基于visual Studio2013解决面试题之1201链表去重
  7. HDOJ 2642 HDU 2642 Stars ACM 2642 IN HDU
  8. 离婚冷静期有用吗?全国哪个省份的情侣最想结婚?大数据告诉你
  9. 计算机学院会会,欢迎访问武汉理工大学计算机科学与技术学院
  10. 重新打包mysql数据库文件_服务器每天早上备份一次 MySQL 数据库并自动打包,同时删除 5 天前的备份文件...