python基础-装饰器
python基础-装饰器
什么是装饰器?
不改变函数原来的调用方式 动态地 给函数 添加功能
装饰器的原则是什么?
装饰器遵循: 开放 封闭原则
-
对添加新功能是开放的
-
硬改已经存在的代码
装饰器使用场景
装饰器一般用于动态添加功能,相当于对原来的函数进行扩展,python中叫语法糖 一般改别人代码,不想改动原来的功能代码,直接使用装饰器给这个方法添加新功能
学习装饰器之前,先对函数进行简单的复习
# 1. 函数的定义等
# def func():
# print("哈哈哈")
# func() # 函数的调用
# print(func) # 函数的内存地址
# # 2. 函数可以像变量一样用来赋值
# yingying = func # 函数可以作为变量去赋值
# yingying() # 相当于执行了原来的func()
# 3. 函数名可以像普通变量一样放到容器(列表、字典、元组...)中
# def f1():
# print("f1")
# def f2():
# print("f2")
# list1 = [f1, f2]
# for i in list1:
# i()
# # 4. 函数可以当成参数传到别的函数中
# def f3(arg):
# arg()
#
#
# f3(func)
# 5. 函数可以作为返回值
def f4():
def f5():
print("iPhone Xs MAX太贵啦...")
return f5
ret = f4()
print(ret)
ret()
写一个函数装饰器
def create_people():
# print("加口唾沫~") # 违背了封闭原则
print("抓把泥,捏个人,吹口气, 活了!")
# def koushui_create_people(arg): #装饰器内部用的就是这个机制,首先使用了闭包,在不改变原先函数的基础上添加新功能
# def inner():
# print("加口唾沫")
# arg()
# print("上个色儿~")
# return inner
# create_people()
# create_people()
# create_people()
# koushui_create_people()
# koushui_create_people()
# koushui_create_people()
# ret = koushui_create_people(create_people)
# print(ret)
# ret()
create_people = koushui_create_people(create_people)
create_people()
# 加口唾沫~
# 抓把泥,捏个人,吹口气, 活了!
# 语法糖
def koushui_create_people(arg):
def inner():
print("加口唾沫")
arg()
print("上个色儿")
return inner
#需要注意的点:1.定义方法必须在被装饰的函数的上面执行.
# 2.inner记住不能加(),如果加了括号我定义的函数回立刻执行把结果返回了
@koushui_create_people
def create_people():
# print("加口唾沫~") # 违背了封闭原则
print("抓把泥,捏个人,吹口气, 活了!"

浙公网安备 33010602011771号