zoukankan      html  css  js  c++  java
  • 叠加多个装饰器,列表生成式,字典生成式,匿名函数

    一. 叠加多个装饰器

      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)
        
  • 相关阅读:
    linux之间文件共享的方式
    linux访问windows文件的方法
    linux下samba配置
    linux下ftp搭建
    windws下搭建ftp步骤
    索引的二元高度
    Oracle表的分析统计
    oracle———索引
    这些git技能够你用一年了
    使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组件
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10059582.html
Copyright © 2011-2022 走看看