装饰器进阶

装饰器的进阶

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

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

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

转载于:https://www.cnblogs.com/python25/p/11402565.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值