Python 匿名函数 lambda

ChatGPT 3.5 国内中文镜像站免费使用啦

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

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

图片[1]-Python 匿名函数 lambda-猿说编程

一.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))
图片[2]-Python 匿名函数 lambda-猿说编程

三.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

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容