python装饰器

#练习:给下面的函数添加打印九九乘法表的新功能
# def show():
#  for i in range(10):
#      print(i)

def show():
 for i in range(10):
     print(i)

def outer(fun):
    def inner():
        fun()
        for i in range(1, 10):
            for j in range(1, i+1):
                print(f"{i}*{j}={i*j} ", end="")
            print()
    return inner
show = outer(show)
show()

#将上面方式改成简写的方式

def outer(fun):
    def inner():

        fun()
        for i in range(1, 10):
            for j in range(1, i+1):
                print(f"{i}*{j}={i*j} ", end="")
            print()
    return inner

@outer
def show():
 for i in range(10):
     print(i)

show()



装饰器:对已经存在的函数不用重复声明,只需在原有函数中添加新功能即可
简单和带参数,带普通参数和带不定参数的装饰器,对于装饰器没有多大区别,就是简单传递参数,和单个与多个参数的区别
系统的简写:
            将func = outer(func) 简写为@outer,
            此时可以将装饰器理解为:将原函数直接添加新功能,然后用闭包封装(主要为了实现调用),作为对原函数的重新声明,
                                  然后照旧对原函数实现调用,只是在原函数前面加@outer,表示调用的是新封装的函数
多个装饰器装饰同一个函数:
                        1.写多个装饰器
                        2.多个@,注意顺序
                        3.返回的是原函数累加装饰后的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值