python学习小记录一(装饰器)

原创 2018年04月17日 18:03:24

今天学习python发现了一个很屌的知识点叫什么装饰器。这玩意很屌啊,很像Java里面的注解框架功能,但是感觉又比注解好理解一些,我感觉最适合用来打日志了。咩哈哈哈。来来来,看代码。

# -*- coding: utf-8 -*-
# code by xiaonan
import datetime
import time
import functools

def log(func):
    @functools.wraps(func)
    def wrapper(*args,**kwargs):
        print("method call start")
        func(*args,**kwargs)
        stop_time = datetime.datetime.now()
        print("method call stop")
        return None
    return wrapper

@log
def now():
    print("This is method")

if __name__=="__main__":
    now()

在log函数里面,你可以打很多的日志,包括参数什么的,执行时间啥的都打出来。然后你只需要在想要打日志的函数前面华丽的写上@log,在执行这个函数的时候,log也就可以输出了。这玩意真的很神奇啊。当打上@log标签的函数执行的时候,会先去执行wrapper函数,感觉像是hock或者反射之类的功能,这里引用一下廖雪峰老师的原

由于log()是一个decorator,返回一个函数,所以,原来的now()函数仍然存在,只是现在同名的now变量指向了新的函数,于是调用now()将执行新函数,即在log()函数中返回的wrapper()函数。wrapper()函数的参数定义是(*args, **kw),因此,wrapper()函数可以接受任意参数的调用。在wrapper()函数内,首先打印日志,再紧接着调用原始函数。

这里就学会了这个不明觉厉的功能。以后会自己封装喜欢的log风格,哪怕打印一个火车都行,只要在喜欢的地方!!哈哈哈,开森


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/StrangeNightmare/article/details/79978400

Python实战小程序——装饰器

第四题:简述对Python装饰器的理解,写一个简单的装饰器。 要理解装饰器,我们先介绍一下几点python的基础知识。 1、作用域(命名空间)及变量生存周期 有过一点编程基础的都知道namesp...
  • misayaaaaa
  • misayaaaaa
  • 2016-11-04 16:15:29
  • 979

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

Python 装饰器记录总结 (终极版)
  • jacke121
  • jacke121
  • 2017-09-11 20:29:52
  • 277

超时函数装饰器

# -*- coding: utf-8 -*- from threading import Thread import time class TimeoutException(Exception):...
  • yangfang2111
  • yangfang2111
  • 2015-10-07 15:28:08
  • 288

Python装饰器有趣实例探究

Python装饰器有趣实例探究
  • sophie2805
  • sophie2805
  • 2015-06-05 00:01:13
  • 1067

python装饰器decorator之计算函数运行时间的例子

python装饰器decorator之计算函数运行时间的例子
  • goupper1991
  • goupper1991
  • 2015-11-17 17:37:51
  • 945

Python:使用property装饰器将方法转为属性

最近看了一下python,学习了点基础。本文就是在学习python过程中的产物之一。一来作为笔记方便日后参阅,二来写出来分享给python初学者。由于笔者的工作语言是java,因此可能回经常将pyth...
  • javy_codercoder
  • javy_codercoder
  • 2016-03-31 16:24:55
  • 1106

python使用装饰器作日志处理

装饰器这东西我看了一会儿才明白,在函数外面套了一层函数,感觉和java里的aop功能很像;写了2个装饰器日志的例子, 第一个是不带参数的装饰器用法示例,功能相当于给函数包了层异常处理,第二个是带参数...
  • Memory_and_Dream
  • Memory_and_Dream
  • 2017-06-29 11:10:07
  • 719

python装饰器--原来如此简单

python装饰器–原来如此简单今天整理装饰器,内嵌的装饰器、让装饰器带参数等多种形式,非常复杂,让人头疼不已。但是突然间发现了装饰器的奥秘,原来如此简单。。。。第一步 :从最简单的例子开始# -*-...
  • u013858731
  • u013858731
  • 2017-02-10 16:27:56
  • 2488

《Python - 实现一个简单的装饰器》--- 输出程序运行时间

主要结合程序认识理解Python中的装饰器。练习Python代码的编写。 简单代码#!/usr/bin/env python #-*- coding: utf-8 -*-""" @author: 烽火...
  • w695050167
  • w695050167
  • 2017-07-05 16:10:46
  • 873

对Python中装饰器的理解

文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: @makebold @makeitalic def say():    return "Hello" 打...
  • weixin_40475469
  • weixin_40475469
  • 2017-12-01 20:53:35
  • 114
收藏助手
不良信息举报
您举报文章:python学习小记录一(装饰器)
举报原因:
原因补充:

(最多只允许输入30个字)