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

31 装饰器

装饰器可以对一个函数、方法或者类进行加工,是一种高级的python语法。

  • 装饰函数

  1. 接收一个可调用对象作为输入参数,并返回一个新的可调用对象.
  2. 把函数传递给装饰器,然后增加新的功能,返回一个新的函数重赋值给原函数
  3. 语法:

def decorator1...  #  定义装饰器

@decorator1        #  定义函数前,@装饰器

def function1        # 定义要加工的函数

例子:

def mydecorator(myfunction):def new_myfunction(a,b):print("modify myfunction:")   # 1return myfunction(a,b)return new_myfunction@mydecorator
def myfunction(x,y):print("old myfunction")            #2return x*yprint(myfunction(6,7))

顺序: 先执行装饰器里面的语句1,再执行原函数的语句2。

  • 含参的装饰器

在上面的例子中,@mydecorator默认后面的函数是它的唯一参数;

实际上,装饰器也可以含有其它参数,如@mydecorator(a)

  • 装饰类

一个装饰器可以接收一个类,并返回一个类,从而起到加工类的效果。

例子:

def mydecorator(myclass):class newClass:def __init__(self,age):self.display_time=0self.wrapped=myclass(age)                               #把原类赋值给新类def display(self):self.display_time+=1print("this is ",self.display_time,"th display time")   #1self.wrapped.display()                                  # 调用原类的函数return newClass@mydecorator
class Bird:def __init__(self,age):self.age=agedef display(self):print("My age is ", self.age)                              #2eagleLord=Bird(5)
for i in range(4):eagleLord.display()

顺序与装饰函数类似。先装饰类1,后原类2。

posted on 2016-05-10 13:49 Suckseedeva 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/skyEva/p/5477564.html

Python 学习笔记9(装饰器,decorator)相关推荐

  1. [转载] Python学习笔记——用装饰器decorator和Memoization记忆化提高效率,原理讲清楚了

    参考链接: 在Python中使用装饰器进行记忆 Python学习笔记--用装饰器decorator和Memoization记忆化提高效率 装饰器Memoization记忆化运用`functools`中 ...

  2. python学习笔记(装饰器、迭代器生成器、内置函数、软件目录开发规范)

    装饰器 定义:本质是函数,(功能:装饰其他函数):就是为其他函数添加附加功能 模拟场景一,在现有的函数中增加某个功能.现有的做法是定义新函数,并且加入函数中.需要修改源代码. def logger() ...

  3. Python学习笔记:装饰器

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. python学习笔记之——装饰器及对象

    1.反射之__import__ 我们知道import语句是用来导入外部模块的,当然还有from...import...也可以,但是其实import实际上是使用builtin函数__import__来工 ...

  5. python学习笔记之装饰器、递归、算法(第四天)

    参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...

  6. [转载] python学习笔记——@property装饰器

    参考链接: Python @property装饰器 上篇:https://blog.csdn.net/qq_42489308/article/details/89423412 @property装饰器 ...

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

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

  8. 廖雪峰python教程笔记:装饰器

    这是看廖老师python教程的第一个的笔记,因为这是这份教程最难的章节之一,我来来回回看了三遍,终于有所突破,写在这里是为了巩固自己的理解,同时也是希望有错的地方能够得到指正.具体内容见廖雪峰老师的课 ...

  9. Python学习之路-装饰器生成器正则表达式

    装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(fu ...

  10. Python学习之路--装饰器

    三元运算 变量 = 条件返回True的结果 if 条件 else 条件返回False ,用于简单 import time time.time() 1970年至今多少秒 time.sleep()暂时休眠 ...

最新文章

  1. 实战 | 哪个瞬间让你突然觉得CV技术真有用?
  2. Java并发同步器AQS
  3. 谷歌、阿里们的杀手锏:3大领域,10大深度学习CTR模型演化图谱(附论文)
  4. 值得二刷的让MySQL性能“飞起来”的方法总结
  5. 栈出现的异常和设置栈的大小-Xss
  6. asp.net + ajax + sqlserver 自动补全功能,asp.net+ajax+sqlserver自动补全功能实现解析
  7. 作者:朱扬勇,博士,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
  8. vb子程序未定义怎么改怎么办_vb中子程序或者函数未定义!求教解决方案,
  9. xmind 笔记
  10. 协议圣经(二) RTP组播音视频技巧
  11. Dart的套接字与web套接字
  12. 学习日记12、list集合中根据某个字段进行去重复操作
  13. Linux里sra文件是什么,生信软件 | Sratools (操作SRA文件)
  14. SQL常用增删改查语句
  15. springboot 使用mybatis与mybatis-generator与druid (gradle构建)
  16. varchar2 汉字长度问题
  17. 基于JAVA大众点评管理系统计算机毕业设计源码+系统+lw文档+部署
  18. k8s常见故障排查一点通
  19. 【Security】操作系统安全
  20. 格灵深瞳:人脸识别最新进展以及工业级大规模人脸识别实践探讨 | 公开课笔记...

热门文章

  1. OpenCV3学习(10.2)codebook码书法实现背景剔除
  2. Web PostMessage
  3. oracle 时间按季度,Oracle按日期季度查询
  4. 系统提示服务器响应错误,Win10系统无法打开软件提示“服务器没有及时响应或控制请求”错误的解决方法...
  5. 修改intellij(idea)中mybatis对应的xml背景颜色
  6. 个人项目1:随机生成30道整数四则运算题
  7. HDU 1114 Piggy-Bank 简单DP
  8. struts 标签s:ierator的简单使用说明
  9. ndk学习20: jni之OnLoad动态注册函数
  10. POJ3259-负权回路判定