zoukankan      html  css  js  c++  java
  • python lanbda匿名函数(20)

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

    写代码

    一.匿名函数语法:

    lambda a,b,c:expression

        匿名函数有以下几个特点:

        1.匿名函数有关键字 lambda 修饰;

        2.匿名函数冒号 : 之前的是函数的参数,匿名函数可以是无参匿名函数,也可以是带参匿名函数;

        3.匿名函数冒号 : 之后是表达式,匿名函数不需要写 return,表达式的结果就是返回值;

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:何以解忧
    @Blog(个人博客地址): shuopython.com
    @WeChat Official Account(微信公众号):猿说python
    @Github:www.github.com
     
    @File:python_lambda.py
    @Time:2019/10/5 17:48
     
    @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

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

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

    复制粘贴

    二.匿名函数调用:

        1.匿名函数常规使用

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

    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.匿名函数使用不定长参数

    # 匿名函数:通过条件表达式,返回最大值
    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"))

        输出结果:

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

     

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

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

     

    能用就行

    三.重点总结:

         1.匿名函数可以是无参匿名函数也可以是有参匿名函数;

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

     

     

    猜你喜欢:

        1.python函数声明和调用

        2.python字典推导式

        3.python列表推导式

        4.python函数不定长参数 *argc,**kargcs

     

        转载请注明:猿说Python » python匿名函数

     

    技术交流、商务合作请直接联系博主
    扫码或搜索:猿说python
    python教程公众号
    猿说python
    微信公众号 扫一扫关注
  • 相关阅读:
    linux常用命令总结-updating
    三次握手、四次挥手的理解
    【WPF学习】第二十八章 程序集资源
    【WPF学习】第二十七章 Application类的任务
    【WPF学习】第二十六章 Application类——应用程序的生命周期
    【WPF学习】第二十五章 日期控件
    【WPF学习】第二十四章 基于范围的控件
    【WPF学习】第二十三章 列表控件
    【WPF学习】第二十二章 文本控件
    【WPF学习】第二十一章 特殊容器
  • 原文地址:https://www.cnblogs.com/shuopython/p/11856421.html
Copyright © 2011-2022 走看看