首页 » InfoTech »

Python用函数创建装饰器

2018年12月1日 / 4次阅读
Python

打开支付宝首页,搜索“529018372”,即可领取红包!可重复领。

特色图片

装饰器要求入参是函数对象,返回值是函数对象,嵌套函数完全能胜任。

def make_bold(func):
    print('Initialize')
    def wrapper():
        print('Call')
        return '{}'.format(func())
    return wrapper
>>> @make_bold
... def get_content():
...     return 'hello world'
...
Initialize
>>> get_content()
Call
'<b>hello world</b>'

因为返回的wrapper还在引用着,所以存在于make_bold命名空间的func不会消失(Python的闭包特性)。make_bold可以装饰多个函数,wrapper不会调用混淆,因为每次调用make_bold,都会有创建新的命名空间和新的wrapper

有装饰器@修饰的函数,在调用的时候,会自动调用其装饰器函数。

在什么情况下,需要用到@装饰器?

@装饰器是Python的syntax sugar,即语法糖,这表示,没有装饰器,一样可以实现功能。不过现在有了装饰器,可以让语法更简洁,可以写更少的代码,可以轻松实现更强大的功能。装饰器的本质,是在调用原来函数的时候,在其运行前后,增加一些代码来执行,进行前后的装饰效果。因此,如果你有一个套代码,其中有个函数被多处调用,而有不方便直接修改这个函数的调用接口,就可以通过装饰器的方式来实现。

numba使用装饰器来实现JIT,可见其强大的能力。

 

本文链接:http://www.maixj.net/ict/zhuangshiqi-19446
云上小悟 麦新杰(QQ:1093023102)

相关文章

评论是美德

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top