装饰器进阶

装饰器的进阶

有参:在标准装饰器的外层,套了一层就需要额外的调用一程

语法糖:@装饰器(参数)

 # 带参修饰器
# 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)

posted @ 2019-08-23 20:52  风景!  阅读(296)  评论(0编辑  收藏  举报