关于python装饰器的详细介绍_后端开发

关于python装饰器的详细介绍_后端开发,第1张

linux源码安装php7.2.0_后端开发

源码包下载地址https://pan.baidu.com/s/1bpi4D9l2. 解压php压缩包:tar –zxvf php-7.2.0.tar.gz3. 进入解压后的:cd php7.2.04.安装php需要的扩展yum install libxml2 libxml2-devel openssl opens...

python装饰器就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。


装饰器本质上就是一个闭包,闭包是装饰器的核心。


关于python装饰器的详细介绍_后端开发,第2张

定义

(推荐教程:python教程)

python装饰器(fuctional decorators)就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。


这个函数的特殊之处在于它的返回值也是一个函数,这个函数是内嵌“原“”函数的函数。


详解

装饰器其实就是一个闭包,把一个函数当做参数后返回一个替代版函数,闭包是装饰器的核心。


简单解释下闭包的特点:

一个函数返回的函数对象,这个函数对象执行的话依赖非函数内部的变量值,这个时候,函数返回的实际内容如下:

1、函数对象;

php8具体发布时间表一览!_后端开发

PHP 8计划于2020年12月的第一周发布!Alpha的第一个版本已于2020年6月发布。


像往常一样,这是查找错误,要求更改的好时机,并且仍有很短的时间可以提交您的更新。


2、函数对象需要使用的外部变量和变量值;

以上就是闭包,闭包必须嵌套在一个函数里,必须返回一个调用外部变量的函数对象,才是闭包。


举例:

#encoding=utf-8
import time
def now():
    print "current time is %s" %time.strftime("%Y-%m-%d %H-%M-%S")
res=now
res()

结果:

关于python装饰器的详细介绍_后端开发,第3张

现在如果我们想给now()函数增加一些别的功能,比如在调用该函数前后自动打印一些日志,但又不希望修改原now()的定义,这时候我们的装饰器就配上用场了。


本质上,decorator就是一个返回函数的高阶函数。


所以我们需要定义一个能打印日志的的decorator

Python2.4以后,支持使用标识符@将装饰器应用到函数上,只需要在函数的定义前加上@和装饰器的名称即可

代码:

#encoding=utf-8
import time
#定义装饰器
def log(func):
    def wrapper(*args,**kw):
        print "call func is %s" %func.__name__
        return func(*args,**kw)
    return wrapper

@log
def now():
    now = time.strftime("%Y-%m-%d %H-%M-%S")
    print "current time is %s" %now

now()

结果:

关于python装饰器的详细介绍_后端开发,第4张

以上就是关于python装饰器的详细介绍的详细内容,更多请关注ki4网其它相关文章!

putchar函数在C语言中是什么意思_后端开发

putchar函数在C语言中表示字符串输出函数,putchar函数的功能是在终端(显示器)输出单个字符。


函数语法格式:【int putchar(int ch)】,其中,ch表示要输出的字符内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/561905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020-07-08
下一篇 2020-07-08

发表评论

登录后才能评论

评论列表(0条)

保存