Fork me on Gitee

19.叠加多个装饰器,三元表达式,生成式,函数的递归调用

# 1.叠加多个装饰器的加载和执行过程
# def deco1(func1):
#     def wrapper1(*args,**kwargs):
#         print('this is deco1.wrapper1')
#         res1 = func1(*args,**kwargs)
#         return res1
#     return wrapper1

# def deco2(func2):
#     def wrapper2(*args,**kwargs):
#         print('this is deco2.wrapper2')
#         res2 = func2(*args,**kwargs)
#         return res2
#     return wrapper2
#
# def deco3(db_type):
#     def outter3(func3):
#         def wrapper3(*args,**kwargs):
#             db_type
#             print('this is deco3.outter3.wrapper3')
#             res3 = func3(*args,**kwargs)
#             return res3
#         return wrapper3
#     return outter3
#
# @deco1
# @deco2
# @deco3('file')
# def index(x,y):
#     print(x,y)



# 2.生成器的高级玩法之yield挂起函数

# def dog(name):
#     i = 0
#     print('dog %s is aready to eat '%name)
#     while True:
#         if i<3:
#
#             x = yield
#             print('dog %s eat %s'%(name,x))
#             i+=1
#         else:return
#
# g = dog('alex')
# g.__next__()
# g.send('包子')
# g.send('包子')
# g.send('包子')



# 3.三元表达式
# 定义一个函数判断输入两个值的最大值
# def big(x,y):
#    res =  x if x>y else y
#    print(res)
# big(10,2)




# 4.生成式

# 统计文件大小---生成式
# def file_size(file_name):
#     with open(file_name,'rt',encoding='utf-8') as f:
#         res = sum(len(line) for line in f) # 生成器生成式
#         print(res)
# file_size('笔记.txt')
# l = ['egon_dsb','alex_dsb','lxx_dsb'] # 列表生成式
# new_l = [i.rstrip('_dsb') for i in l]
# new_l = [ i.split('_')[0] for i in l]
# print(new_l)
# l = {'name':'alex','age':'18','gender':'male'}
# dic = {k:v for k,v in l.items() if k != 'gender'}  # 字典生成式
# print(dic)

# 5.函数的递归调用
# 递归调用就是在函数体代码执行时直接或间接的调用直接
# 打印多层列表里的值
# l = [1,2,[3,4,[5,6,[7,[8,[9]]]]]]
# def func(l):
#     for i in l:
#         if i.__class__ is not list:
#             print(i)
#         else:func(i)
# func(l)

# 函数的递归之 回溯 和 递推
# 函数一层一层的往下推叫回溯 ,从上一层一层的往回推叫递推

# yield表达式
# def func():
#     print(1)
#     yield 1111
#     print(2)
#     yield 2222
#     print(3)
#     yield 3333
#     print(4)
# g = func()
# print(g.__next__())
# print(g.__next__())
posted @ 2021-10-21 21:58  Edendd  阅读(35)  评论(0)    收藏  举报
动态线条
动态线条end