装饰器进阶
装饰器的进阶
有参:在标准装饰器的外层,套了一层就需要额外的调用一程
语法糖:@装饰器(参数)
# 带参修饰器
# while True:
# def count(a):
# def func(f):
# def fool(*args,**kwargs):
# if a=="1":
# print("这是第一个装饰的函数qq")
# f(*args,**kwargs)
# if a == "2":
# print("这是第一个装饰的函数微信")
# f(*args, **kwargs)
# if a == "3":
# print("这是第一个装饰的函数虎牙")
# f(*args, **kwargs)
# if a == "4":
# print("这是第一个装饰的函数腾讯")
# f(*args, **kwargs)
# return fool
# return func
#
# msg="""
# 1.qq
# 2.微信
# 3.虎牙
# 4.腾讯
# """
# s=input(msg+"请输入选择的序号")
# @count(s)
# def cen(*args,**kwargs):
# print(f"这是被修饰函数{args}")
# # func=count(s)
# # cen=func(cen)
# cen(1)
多个修饰器修饰一个函数
多个装饰器修饰一个函数的时候,先执行离被修饰函数最近的装饰器
小技巧:V
# #2多个修饰器修饰一个函数
# def func1(f):
# def fool(*args,**kwargs):
# print("这是第一个修饰器的开始")
# f(*args,**kwargs)
# print("这是第一个修饰器的结束")
# return fool
#
# def func2(f):
# def fool(*args,**kwargs):
# print("这是第二个修饰器的开始")
# f(*args,**kwargs)
# print("这是第二个修饰器的结束")
# return fool
#
# def func3(f):
# def fool(*args,**kwargs):
# print("这是第三个修饰器的开始")
# f(*args,**kwargs)
# print("这是第三个修饰器的结束")
# return fool
# @func1
# @func2
# @func3
# def cen(*args,**kwargs):
# print("请修饰这个函数")
# # cen=func3(cen)
# # cen=func2(cen)
# # cen=func1(cen)
# cen()
递归
一递一规
1,不断调用自己本身
2,有明确的终止条件
# 3递归
# def cen(i):
# if i==3:
# return 38
# else:
# return cen(i+1)-2
# print(cen(1))
lis=["世界","明天","你还",["在","那"],"里",["是","吗"]]
def cen(lis):
for i in lis:
if type(i)==list:
cen(i)
else:
print(i)
cen(lis)