• Python 匿名函数 lambda


    目录

    零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

    Python 开发中常规的函数在调用之前都需要先声明,而 Python 匿名函数,有速写函数的功能并且匿名函数不需要声明也没有函数名字,完全不需要担心函数名冲突,具体的妙用还需要从实战练习中多多积累经验。

    一.Python 匿名函数 lambda 语法

    lambda a,b,c:expression
    

    1.匿名函数有关键字 lambda 修饰;
    2.匿名函数冒号 : 之前的是函数的参数,匿名函数可以是无参匿名函数,也可以是带参匿名函数;
    3.匿名函数冒号 : 之后是表达式,匿名函数不需要写 return,表达式的结果就是返回值;

    # !usr/bin/env python
    
      # -_- coding:utf-8 \__-
    
      """
      @Author:猿说编程
      @Blog(个人博客地址): www.codersrc.com
      @File:Python 匿名函数 lambda.py
      @Time:2021/04/11 09:00
      @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    
      """
    
      #不带参数的普通函数
      def sing_dog():
          return True #不带参数的匿名函数
      f0 = lambda :True #  无参的匿名函数,在匿名函数的冒号前面无需写参数
      print(sing_dog())
      print(f0())
    
      print("***"*20)
    
      #带参数的普通函数
      def sub(a,b):
          return a - b
      def add(a,b):
          return a + b
    
      #带参数的匿名函数
      f1 = lambda a,b:a-b
      f2 = lambda a,b:a+b
    
      print(sub(4,2))
      print(add(4,2))
      print(f1(4,2))
      print(f2(4,2))
    
      '''
      输出结果:
    
      True
      True
    
    
      2
      6
      2
      6
    '''
    

    首先,匿名函数普通函数对比之下,明显能感觉到匿名函数的使用能让代码更加简洁,当然匿名函数使用场景适用于比较简单的需求,对于复杂的计算,匿名函数是无法完成的;

    其次,无参的匿名函数,在匿名函数的冒号前面无需写参数;

    二.Python 匿名函数 lambda 调用

    1.lambda 匿名函数常规使用

    假如有这样一个需求:传入一个字符串,对字符串根据空格拆分,并以字符串的形式返回拆分后的结果,示例代码如下:

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:猿说编程
    @Blog(个人博客地址): www.codersrc.com
    @File:Python 匿名函数 lambda.py
    @Time:2021/04/11 09:00
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    
    """
    
    str1 = "laowang is sing_dog "
    
    #普通函数
    def get_str(str1):
        # 1.将字符串拆分为列表
        list1 = str1.split(" ")
        # 2.将列表转为字符串并返回字符串
        return "".join(list1)
    
        # 将1/2两步合并为一步完成
        # return "".join(str1.split(" "))
    
    print("打印原始字符串:",str1)
    print("调用普通函数获取字符串拆分结果:",get_str(str1))
    
    #匿名函数
    f0 = lambda a:"".join(a.split(" "))
    print("调用匿名函数获取字符串拆分结果:",f0(str1))
    
    '''
    输出结果:
    
    打印原始字符串: laowang is sing_dog
    调用普通函数获取字符串拆分结果: laowangissing_dog
    调用匿名函数获取字符串拆分结果: laowangissing_dog
    '''
    

    如果对字符串转换不太熟悉的童鞋请参考:字符串/列表/元组/字典之间的相互转换

    2. lambda 匿名函数使用不定长参数

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:猿说编程
    @Blog(个人博客地址): www.codersrc.com
    @File:Python 匿名函数 lambda.py
    @Time:2021/04/11 09:00
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    
    """
    
    # 匿名函数:通过条件表达式,返回最大值
    f0 = lambda x,y: x if x> y else y
    print(f0(5,10))
    
    # 匿名函数:求三个参数的乘积
    f1 = lambda x,y,z: x*y*z
    print(f1(1,2,3))
    
    # 缺省的匿名函数
    f2 = lambda x,y=2: x+y #使用了默认值
    print(f2(10)) #第二个参数为缺省参数,使用默认值2
    
    # 不定长参数的匿名函数
    f3 = lambda *z:z #*z返回的是一个元祖
    print(f3('hello',False))
    
    # 不定长参数的匿名函数
    f4 = lambda **Arg: Arg #arg返回的是一个字典
    print(f4(a=1,b=2,k="hello"))
    
    
    '''
    输出结果:
    
    10
    6
    12
    ('hello', False)
    {'a': 1, 'b': 2, 'k': 'hello'}
    '''
    

    如果对 Python 不定长参数*argc,**kargcs 不太熟悉的话,可以在看一遍这篇文章:Python 函数不定长参数 *argc,**kargcs

    3. lambda 匿名函数作为参数使用

    其实匿名函数作为函数参数传参和普通函数传参没什么区别,示例代码如下:

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:猿说编程
    @Blog(个人博客地址): www.codersrc.com
    @File:Python 匿名函数 lambda.py
    @Time:2021/04/11 09:00
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    
    """
    
    def function1(a,b,):
        return a if a>b else b #返回最大值
    
    # 1.定义匿名函数
    f0 = lambda b:b*10
    # 2.匿名函数作为参数,调用普通函数
    function1(100,f0(5))
    
    # 上面两行代码合并为一行
    function1(100 , (lambda b:b*10)(5))
    

    ]

    三.Python 匿名函数 lambda 重点总结:

    • 1.匿名函数可以是无参匿名函数也可以是有参匿名函数;
    • 2.匿名函数不仅可以直接当作函数调用,还能直接作为函数中的参数直接使用;

    四.猜你喜欢

    1. Python 字符串/列表/元组/字典之间的相互转换
    2. Python 局部变量和全局变量
    3. Python type 函数和 isinstance 函数区别
    4. Python is 和 == 区别
    5. Python 可变数据类型和不可变数据类型
    6. Python 浅拷贝和深拷贝
    7. Python 递归函数
    8. Python sys 模块
    9. Python 列表 list
    10. Python 元组 tuple
    11. Python 字典 dict
    12. Python 条件推导式
    13. Python 列表推导式
    14. Python 字典推导式
    15. Python 函数声明和调用
    16. Python 不定长参数 *argc/**kargcs

    未经允许不得转载:猿说编程 » Python 匿名函数 lambda

    本文由博客 - 猿说编程 猿说编程 发布!

  • 相关阅读:
    《思帝乡·春日游》——[唐]韦庄
    《临江仙·梦后楼台高锁》——[宋]晏几道
    《西江月·夜行黄沙道中》——辛弃疾
    CentOS7 安装 MySQL 5.7.10
    CentOS6 下安装JDK7
    Makefile基础
    CentOS6 下Vim安装和配置
    CentOS6 下MySQL option file
    CentOS6 下编译安装 MySQL 5.6.26
    slice和substring的区别
  • 原文地址:https://www.cnblogs.com/shuopython/p/14868327.html
Copyright © 2020-2023  润新知