• python之lambda表达式


    开篇先明义:lambda是表达式,而def函数是语句代码块

    所以lambda其实就是一个稍微高级一点的式子而已,只不过这个式子比较长,而且还会自己进行一些逻辑上的处理而已,心里不要虚

    lambda也被叫做匿名函数,通俗点说就是一个没有名字的函数,那可不就是一个函数式子吗?在python的垃圾回收机制来看,如果一些内存空间没有引用指向,那这些内存空间就被回收掉,所以这个连名字都没有的匿名函数,肯定是用过即销的。

    综上所述,我们可以很容易的得出lambda表达式的特点

    1.用一个表达式就能实现简单的函数逻辑

    2.没有名字,只是一个表达式

    3.用过即销

    优点:

    1.简单功能可以不用函数

    2.节省内存空间,不止是用过即销节省,它在建立函数的时候也节省,普通的def函数在初始化的时候会进行栈分配,而lambda则不需要

    3.它作为一个表达式,可以嵌套在其他的地方使用,比如列表中,而def函数则不行

    下面来举例来具体看看:

    m, n = 1,2
    def num(m, n):
        return m+n
    f = lambda m, n : m+n
    def_result = num(m,n)
    lambda_result = f(m, n)
    print("def_result:",def_result)
    print("lambda_result:",lambda_result)
    

    打印结果:

    def_result: 3
    lambda_result: 3
    

    上面程序代码的第4、6行可以合并为:

    lambda_result = (lambda m, n : m+n)(m, n)

    再举一个lambda用来编写跳转表(jump table)的栗子,其实就是列表中嵌套lambda表达式

    lst = [lambda x,y:x+y,lambda x,y:x*y, lambda x,y:x/y,lambda x,y:x-y]
    print(lst[0](1,2))                                                  
    print(lst[1](1,2))                                                  
    print(lst[2](1,2))                                                  
    print(lst[3](1,2))                                                  
    lst2 = {"add":lambda x,y:x+y, "reduce":lambda x,y:x-y}              
    print(lst2["add"](1,2))                                             
    

    打印结果为:

    3
    2
    0.5
    -1
    3
    

    上面的这一堆栗子都可以更清晰的看出lambda是一个表达式,它后面跟的就是一个简短的函数表达式

    这里引出lambda表达式的语法格式

    lambda 参数:表达式
    

    其中:

    1.参数可以是一个、多个、可以是任何类型的变量

    2.表达式只可以是一个式子,不可以是一个语句

    # 下面的f、glambda表达式的书写都是错误的
    # f = lambda x,y : if x>y return x
    # g = lambda x,y : return x>y
    m = lambda x,y: x+y
    n = lambda a,b: a>=0
    # print(f(1,2))
    # print(g(1,2))
    print(m(1,2))
    print(n(1,2))

    lambda的用处

    lambda常常和map、filter、reduce、sorted、列表推导式 结合一起用,这些栗子在高阶函数中会讲,可以移步到那个帖子。

  • 相关阅读:
    自娱自乐
    项目冲刺(2)-第二、第三天
    项目冲刺(2)-第一天
    Beta版本冲刺计划及安排
    第一章 构造过程抽象
    python 学习2
    python 学习1
    ionic 初入门
    NodeJS学习
    软件工程实践总结作业——个人作业
  • 原文地址:https://www.cnblogs.com/lybolg/p/12521851.html
Copyright © 2020-2023  润新知