学习整理--python装饰器

使用场景:

思考这样一个问题:对于生产系统,如何在修改最小,实现对原有模块添加新的功能呢?!通过装饰器,即可完成这一目标。

  装饰器有两个标准:

    1、不修改原有代码及原有调用方式;

    2、可以增加新的功能;

  例如,我们有一个方法func1,在这个方法中,打印两条信息并sleep 1秒钟。

def func1():    print("this is in the func1 methord")    time.sleep(1)    print("exec the func1 finished")

‘‘‘调用方法‘‘‘if __name__ == "__main__":  func1()

  现在我想不修改func1()方法及其调用方式的前提下,增加一个打印当前时间的功能,如何实现呢?

import time

def timmer(func):#定义装饰器timmer    def decotator(*args,**kwargs):#定义高阶函数        print("this is in the decorator,and current time is %s",args,kwargs)#添加的方法        func(*args,**kwargs)#执行传递变量的方法    return decotator#另其返回高阶函数地址

@timmer#指明装饰器为timmer,等价于func1=timmer(func1)def func1():    print("this is in the func1 methord")    time.sleep(1)    print("exec the func1 finished")

@timmerdef func2(name):    print("this is in the func2 methord,and the name is :%s" %name)    time.sleep(1)    print("exec the func2 finished")

#调用func1方法func1()

原文地址:https://www.cnblogs.com/fkblogmx/p/8032596.html

时间: 2024-08-30 15:58:13

学习整理--python装饰器的相关文章

[学习记录]python装饰器、getter、setter

1.装饰器 一般以@开头,后面紧跟着一个函数,例如flask中的url设置就是一种装饰器 2.getter与setter 这里用代码来解释 1 class Student(object): 2 3 @property 4 def score(self): 5 return self._score 6 7 @score.setter 8 def score(self, value): 9 self._score=value 第一个@property将score变成了一个getter,同时允许创建@

【转】九步学习python装饰器

本篇日志来自:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 纯转,只字未改.只是为了学习一下装饰器.其实现在也是没有太看明白,对于装饰器我就是用的时候找例子,能蒙对,但是用过之后一段时间就忘了.还是用的少.有空应该好好看一看的,包括闭包.对于各种现代编程语言来说闭包都是很重要的.在这里先谢过原作者,如有侵权请告知. =-=-=-=-=-=-=-=-=-=-一条不怎么华丽的分隔线-=-=-=-=-=-=-=-=-=-= 这

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

装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(func):     def inner():         if USER_TEMP["status"] == False:             print("\033[31;1m用户未登录,请先登录\033[0m")             login_atm()

Python 装饰器学习心得

最近打算重新开始记录自己的学习过程,于是就捡起被自己废弃了一年多的博客.这篇学习笔记主要是记录近来看的有关Python装饰器的东西. 0. 什么是装饰器? 本质上来说,装饰器其实就是一个特殊功能的函数,这个特殊的功能就是:装饰另一个函数.举一个最简单的例子来说: 1 def identify(f): 2 print 'Decorator identify called.' 3 return f 这里identify其实是一个装饰器,这个装饰器对输入的参数f不进行任何修饰,然后返回这个参数.其中的

[转载]Python装饰器学习(九步入门)

本文转载于: http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次''' def myfunc(): print("myfunc() called.") myfunc() myfunc() 第二步:使用装饰函数在函数执行前和执行后分别附加额外功能 # -*- coding:gbk -*- ''

Python装饰器的学习笔记(转载)

Python装饰器的学习笔记 2017-05-18 程序员共读 来自:标点符的<Python装饰器的学习笔记> 链接:http://www.biaodianfu.com/python-decorator.html 原文:http://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators-in-python#answer-1594484 装饰器(decorator)是一种高级Python语法.可

Python装饰器学习

Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次''' def myfunc():     print("myfunc() called.") myfunc() myfunc() 第二步:使用装饰函数在函数执行前和执行后分别附加额外功能 ? 1 2 3 4 5 6

学习Python装饰器,看这一篇文章就够了

讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 谈装饰器前,还要先要明白一件事,Python 中的函数和 Java.C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个函数,例如: 先来看一个简单例子,虽然实际代码可能比这复杂很多: 说到这里.顺便提醒下大家不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的

python 装饰器学习(decorator)

最近看到有个装饰器的例子,没看懂, #!/usr/bin/python class decorator(object): def __init__(self,f): print "initial decorator" f() def __call__(self): print "call decorator" @decorator def fun(): print "in the fun" print "after " fun