• 叠加多个装饰器,列表生成式,字典生成式,匿名函数


    一. 叠加多个装饰器

      1. 加载顺序: (outter 函数的调用顺序): 自下而上

      2. 执行顺序: (wrapper函数的调用顺序): 自上而下

    def outter1(func1):   func1= wrapper 2 的内存地址
        print(' 加载了outter1')
        def wrapper1(* args, **kwargs):
            print(' 执行了wrapper1')
            res1=func1(* args, **kwargs)
            print(1111)
            return res1
        return wrapper1
    
    def outter2(func2):  func2=wrapper3 的内存地址
        print('加载了outter2')
        def warpper2(* args, **kwargs):
            print('执行了wrapper2')
            res2=func2(* args, **kwargs)
            print(2222)
            return res2
        return wrapper2
    
    def outter3(func3):    #fun3=最原始的那个index内存地址
        print('加载了outter2')
        def wrapper3(* args, **kwargs):
            print('执行了wrappr3')
            res3=func3(* args, **kwargs)
            print(3333)
            return res3
        return wrapper3
    
    @outter1
    @outter2
    @outter3
    def index():
        print('from index')
    index()

    # 执行顺序: 从上到下

    二. 三元表达式

    def max2(x,y):
        if x>y:
            return x
        else:
            return y
    
    res=max2(10, 20)
    
    # 三元表达式
    
    res=x if x>y else y
    
    print(res)

    三.  列表生成式 & 字典生成式

    L=[]
    for i in range(10):
        if i>4:
            L.append(i**2)
    
    L=[i**2 for i in range(10) if i >4]
    
    
    # 字典生成式
    res={i:i**2 for i in range(10) if i>3}
    
    # 集合生成式
    
    res={i for i in 'hello'}

    四. 匿名函数: 只定义了一个函数的内存地址,主要用于临时一次的场景

    lambda x,y: x+y    # lambda 函数自带return值

    res=(lambda x, y: x+y)(1,3)   # 结果为4

    salaries={
        'egon':3000,
        'alex':100000000,
        'wupeiqi':10000,
        'yuanhao':2000
    }
    
    # 求出薪资最高的人名
    def func(k):
      return salaries[k]  
    
    print(max(salaries,key=func))  
    max 底层for 循环
    
    print(max(salaries, key=lambda k:salaries[k])
    
    sorted 函数
    底层for 循环
    
    sorted(salaries,key=lambda k:salaries[k], reverse=True)
        
  • 相关阅读:
    BZOJ3781 小B的询问
    BZOJ3757 苹果树
    BZOJ1491 [NOI2007]社交网络
    BZOJ3754 Tree之最小方差树
    BZOJ1251 序列终结者
    BZOJ2259 [Oibh]新型计算机
    BZOJ1043 [HAOI2008]下落的圆盘
    D. 预定义变量
    A. 变量命名原则
    B. PHP变量的特点
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10059582.html
Copyright © 2020-2023  润新知