Python面试题--第55道题目--如何自定义装饰器--2022年04月10日

一、装饰器的定义:

1、装饰器就是一个函数,可以给一个函数在不做任何改动的前提下添加额外的功能。

2、可以插入日志, 性能测试, 事务处理,缓存等等。

二、代码演示:

如果理解起来有难度,可以看第三部分的举例,那个简单易懂:

from functools import wraps
def log(flag):
    def decorate(func):
        @wraps(func)
        def _wrap(*args, **kwargs):
            try:
                if flag:
                    func(*args, **kwargs)
                print('name', func.__name__)
            except Exception as e:
                print(e.args)
        return _wrap
    return decorate

@log(True) # 语法糖,此装饰器的作用是可以将函数的函数名打印出来。
def add(a, b, c):
    print(a + b + c)

add(1, 2, 3)

三、简单易懂的举例:

装饰器其实是一个函数,此函数的入参是函数,函数内在嵌套着函数,返回值为入参函数。

此例子为一个加法的函数前后增加开始和结束标签。

原来加法函数只是输出一个结果值。

 增加上装饰器以后,会出现开始和结束标签。

代码如下:

# 装饰器的函数,入参为函数,然后嵌套内函数,最后返回入参函数。
def show(function): 
    def temp(*args, **kwargs):
        print('-----开始--------')
        rel = function(*args, **kwargs)
        print('-----结束--------')
        return rel
    return temp

@show # 语法糖
def add(a,b,v):
    print(a + b + v)

add(1, 2, 3)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值