zoukankan      html  css  js  c++  java
  • 洗礼灵魂,修炼python(24)--自定义函数(5)—匿名函数lambda

     在这个互联网时代,大家都喜欢匿名,匿名上网,匿名登录,匿名操作等等,都不喜欢实名对吧?(虽然说现在实名制已经快到来,题外话,扯远了),当然python里也有个不喜欢实名的,它的功效优点特殊,说强大吧?它也有限制,说没什么用吧?它又能干很多事,它就是匿名函数

    匿名函数:lambda

    1.什么是匿名函数:

    其实前面也提到一点点,就是不需要使用def 来定义函数,而是在用的时候直接定义,然后用完则完(不过你一个赋值给一个变量,下面有提到),在前面使用sorted函数为列表排序就使用过lambda了,自己倒回去看看或者看下面的6

    2.作用:

    • 使用lambda可以省下定义函数过程
    • 不需要考虑命名的问题
    • 简化代码的可读性

    3.格式:

    lambda args:expression

    • args:以逗号分隔的参数列表
    • expression:用到args中各个参数的表达式

    例:

    但是像这样是错的,注意了:

    4.注意:

    1):lambda其实就是一个表达式,没有名字,调用时赋值一个变量使用其变量名

    2):lambda是一个单个的表达式,而不是一个代码块(比如for,while循环,if语句等就是一个代码块)

    3):lambda语句定义的代码必须是合法的表达式,不能出现多条件语句(但可以使用if 的三元表达式)和其他非表达式语句(如for和while等)

    4):lambda的首要用途是指定短小的回调函数

    5):lambda将返回一个函数而不是将函数赋值给某变量

    5.lambda和def的区别:

    1):lambda会创建一个匿名的函数对象,但不会把这个函数对象赋给一个标识符,python lambda只是一个表达式。

    2):def 创建函数,其函数时有名称的,会把函数对象赋值给一个变量,def是一个语句

    3):def语句不能出现在列表内,比如:

    但是lambda可以:

    这里要注意,list1还是一个列表,list1[0]才是一个匿名函数

    4):匿名函数只能有一个表达式,输出为表达式的结果,这是它的优点也是它的限制

    6.lambda经典运用:

    1):对集合a以元组第二个元素从小小大排序:

    2):对集合a以元组第一个元素顺序从小到大排序:

    3):对集合a以元组第一个元素从大到小排序:

    lambda可以对元组进行排序,上面已经使用了,也可以对字典进行排序,方法同样的,此处略过,自己尝试了

     7.匿名函数仅支持if的三元表达式:

    8.匿名函数也支持列表解析(列表推导式):

    既然支持列表推导式,那么也得遵循列表规则,这里使用索引5访问元素时,已经超出原有索引值

    下一章将说到匿名函数进阶话题,虽然很简单,但是真的很实用

  • 相关阅读:
    dotnet 新项目格式与对应框架预定义的宏
    dotnet 线程静态字段
    dotnet 线程静态字段
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取系统信息
    dotnet 通过 WMI 获取系统信息
    PHP show_source() 函数
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/7647036.html
Copyright © 2011-2022 走看看