#练习:给下面的函数添加打印九九乘法表的新功能
# 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.返回的是原函数累加装饰后的结果
python装饰器
最新推荐文章于 2024-03-04 15:55:42 发布