最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 开发技术 > Python语言 >
python装饰器怎样理解?如何使用?
PHP中文网发表于 2021-09-26 18:06 次浏览

    这篇文章主要给大家分享的python装饰器的内容,顾名思义,装饰器就是用来装饰的东西,那么装饰什么呢?用来装饰函数。那么具体python装饰器怎样使用呢?感兴趣的朋友接下来跟随小编来学习一下吧。

    装饰器概念

    装饰器,说白了,就是用来装饰函数的一个函数。装饰器遵循 开放封闭原则依赖倒置原则,这两个原则概念,自行百度下,

    装饰器长啥样

def wrapper(f): 
    def inner(*args,**kwargs):  
        ret = f(*args,**kwargs)
        return ret
    return inner

    上述代码是装饰器的固定格式    
调用装饰器

@wrapper  # 简称语法糖
def test():
    print(1)
test()

    @wrapper是调用装饰器,相比于wrapper(test()),更节省代码,更美观。可能你看到这里就不懂了,为啥要@wrapper? 调用函数不是wrapper()

    其实吧,你要我说,我也不知道,我就知道,这样写更简单。直接在要装饰的函数前@wrapper即可以一个小例子快速看懂装饰器

def wrapper(f):
    print(2)
    def inner(*args,**kwargs):
        print(3)
        ret = f(*args,**kwargs)
        print(4)
        return ret
    return inner


@wrapper
def test():
    print(1)
test()

    @wrapper == wrapper(test()) 相当于调用装饰器函数,直接用语法糖@wrapper会更简便    
*args是匹配以位置传参的参数,**kwargs是匹配按关键字传参的参数,这样就可以接收所有参数。    
wrapper(test)接收值传给f,在内圈函数中,ret = f(*args,**kwargs)这函数是执行装饰的函数的代码。再返回执行的值,最后返回这个函数。此代码的执行结果为:

2
3
1
4

    如下图所示

    由此可见,函数inner中,print(3)是执行装饰函数前的操作, print(4)是执行装饰函数后的操作。理解起来可能有些困难。所以最好还是动手试试。

    基础小练习

'''1. 默写装饰器固定格式
  2. 写一个加减功能的装饰器
'''

    对python装饰器就介绍到这了,上文对python装饰器有比较通俗的介绍,对大家快速理解python装饰器有一定的而帮助,感兴趣的朋友可以了解看看,希望大家阅读完这篇文章能有所收获,想要了解更多请关注群英网络其它相关文章。

标签:python装饰器
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐