Python基础-11-装饰器基础

装饰器

1)装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是

一个函数对象

2)它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

3)装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

概况地讲,装饰器的作用就是为已经存在的对象添加额外的功能

 

添加装饰器

1.未加装饰器,定义两个函数,实现两个计算结果并打印

(1)代码

# coding:utf-8

def add(a, b):
    print("加法的结果是:", (a+b))

def sub(a,b):
    print("减法的结果是:", (a-b))

add(10,20)
sub(50,10)

(2)结果

 

2.添加装饰器

(1)现在要求每个方法执行print前后加上“开始执行...”和“执行结束...”两句话,如果函数太多,一个个加上这两句语句非常不实际,且不合理,如果后期要求字符串变化再依次去更改,工作量是相当大的,此时用装饰器再合适不过。

(2)添加装饰器需要用到装饰糖

装饰糖:@符号是装饰器的语法糖,在定义函数的时候使用,避免再一次赋值操作

 

①代码(此次我们先将add函数加上装饰器)

# coding:utf-8

def add_finally(func):
    def add_two(a, b):
        print("开始执行...")
        func(a, b)
        print("执行结束...")
    return add_two

@add_finally
def add(a, b):
    print("加法的结果是:", (a+b))

def sub(a,b):
    print("减法的结果是:", (a-b))

add(10,20)
print("------------------------")
sub(50,10)

②结果

总结:添加了装饰器的加法函数,实现了在print前后加上了语句

@add_finally:相当于add = add_finally(add)

第一个add:为了接受add_finally的返回结果add_two

第二个add:是def add函数,作为一个实参传递给形参func

 

①代码(全部加上装饰器)

# coding:utf-8

def add_finally(func):
    def add_two(a, b):
        print("开始执行...")
        func(a, b)
        print("执行结束...")
    return add_two

@add_finally
def add(a, b):
    print("加法的结果是:", (a+b))

@add_finally
def sub(a,b):
    print("减法的结果是:", (a-b))

add(10,20)
print("------------------------")
sub(50,10)

②结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值