python之装饰器

python中,装饰器函数的功能:在不改变原函数的情况下,为原函数添加新功能。核心原理是,定义一个包含内嵌函数装饰函数,装饰函数的形参类型为函数,在内嵌函数中为传入的函数添加新的功能代码。外层的装饰函数则将内层的函数名作为返回值,以此达到为实参函数新增功能的目标,且不用修改原函数。

然后,将原函数作为实参调用装饰函数,并将结果赋值给原函数,此时原函数已是一个包含新增的功能的函数。,具体思路如下:

def 装饰函数(形参1):

        def 内嵌函数(形参2):#形参2与原函数的形参保持一致

                添加新功能代码

                renturn 形参1(参数2)

        retunr 内嵌函数

#@装饰函数       #可替代  "原函数= 装饰函数(原函数)"这行代码

def 原函数( 形参2):

        .... .....

        ..........

原函数= 装饰函数(原函数)#该行代码可被 @装饰函数 替代,且其位与原函数之前

具体实例详见代码:

#装饰函数
def defunc(func):
    def wrapper(n):#内嵌函数,形参于原函数保持一致
        if n%2==0:n=0#新增的功能,n为偶数时,n=0
        return func(n)#返回原函数的调用结果
    return wrapper#返回内嵌函数
# @defunc#可替代func=defunc(func)这行代码
def func(n):#原函数,输出一个数的平方
    return (f"n**2={n**2}")
func=defunc(func)#被装饰后的函数,n为偶数时,返回0,否则,返回n的平方
print("n=2:",func(2))
print("n=3:",func(3))
print("n=4:",func(4))
print("n=5:",func(5))

运行结果:
n=2: n**2=0
n=3: n**2=9
n=4: n**2=0
n=5: n**2=25

                

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值