python教程:Python基础 装饰器及练习

 所属分类:php教程

 浏览:120次-  评论: 0次-  更新时间:2022-09-29
描述:更多教程资料进入php教程获得。 Python视频教程讲解装饰器程序员必备接口测试调试工具:立即使用 Apipost = Postman + Swagger +...
更多教程资料进入php教程获得。 Python视频教程讲解装饰器

程序员必备接口测试调试工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
后端、前端、测试,同时在线协作,内容实时同步

推荐免费: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

如下图所示

4f87a13a6635aec3ffbe0e376c52a2c.png

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

基础小练习

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

以上就是Python基础 装饰器及练习的详细内容,更多请关注zzsucai.com其它相关文章!

 标签: 装饰器,Python,
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!