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访问元素时,已经超出原有索引值

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

  • 相关阅读:
    git生成SSH秘钥
    ifconfig
    接口自动化测试平台:简介
    Gitd的使用
    jenkins自动化部署和Tomcat中间件容器
    Struts2——用来开发 MVC 应用程序的框架,可用于创建企业级Java web应用程序
    Hibernate——Java 领域的持久化ORM框架
    jQuery——JavaScript库
    JavaScript HTML DOM——文档对象模型
    JVM 完整深入解析
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/7647036.html
Copyright © 2011-2022 走看看