• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python 装饰器代码解析

python 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论
文章目录[隐藏]

前言:

以往看到我博客的小伙伴可能都知道,我的前言一般都是吐槽和讲废话环节,哈哈哈哈。今天难得休息,最近可真是太忙了,博主已经连续一年都在996了,所以最近没怎么学习新东西,只能回顾以往的旧知识了,上周一起工作的小伙伴扛不住996离职了,我们三人的小团队也正式解散了,哎。原本想着找时间好好整理一个关于关于接口自动化测试或ceph相关的东西。但由于篇幅过长这里目前可能不会着手写这方面东西。其实啊写是很简单的,主要例子难找。哈哈哈哈。
好了回归正题吧。看过我以往博客的小伙伴肯定见我用过@parameterized.expand()用作参数化的装饰器。这属于系统定义装饰器,当然我们自己也可以自定义装饰器已适合我们日常的开发需求。
**什么是装饰器:**装饰器的本质就是一个函数,作用是在不改变源代码的情况下,给函数增加额外的功能;装饰器的使用通过@语法糖进行调用。

普通装饰器:

直接上代码吧。

def demo(func_test):
    def wrapper():
        print('定义的第一个装饰器')
        func_test()
        print('装饰器结束')
    return wrapper    #这里注意不要加括号


@demo
def func_test():
    print('小白小白!!!!')

直接使用自定义装饰器强化的原方法。
带有参数的装饰器:

def demo(func<i style="color:transparent">本文来源gaodai$ma#com搞$$代**码)网8</i>_test):
    def wrapper(name):
        print('定义的第一个装饰器')
        func_test(name)
        print('哦,你就是%s啊'%name)
        print('装饰器结束')
    return wrapper


@demo
def func_test(name):
    print('大家好我叫%s'%name)

是不是有点感觉了啊。
接下来就是不带自定义参数的装饰器

def demo(func_test):
    def wrapper(*name,**kwargs):
        print('定义的第一个装饰器')
        func_test(*name,**kwargs)
        print('哦,你就是%s啊'%name[0])
        print('你今年%s岁啊'%name[1])
        print('装饰器结束')
    return wrapper


@demo
def func_test(name,age):
    print('大家好我叫%s'%name)
    print('今年{}'.format(age))

是不是很简答啊。哈哈哈哈
多个装饰一起使用。

def deco01(func):
    def wrapper(*args,**kwargs):
        print('第一层的装饰器')
        func(*args,**kwargs)
        print('第一层装饰器结束')
    return wrapper


def deco02(func):
    def wrapper(*args,**kwargs):
        print('这是第二层装饰器')
        print('第二层装饰器结束')
        func(*args, **kwargs)
    return wrapper


@deco02
@deco01
def func(a,b,c,name):
    print('hello ,here is a func')
    print("result is %d" %(a+b+c))
    print('name:{}'.format(name))

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python 装饰器代码解析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址