Python 之 lambda 函数完整详解 & 巧妙运用

本文详细介绍了Python中的Lambda函数,包括其语法、特性及在高阶函数如map(), reduce(), sorted(), filter()中的应用,帮助读者掌握Lambda函数的灵活使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

lambda 函数在 Python 编程语言中使用频率非常高,使用起来非常灵活、巧妙;

那么,什么是lambda ?它有哪些用法和应用场景呢 ?

下面让我一起来解读 lambda的神秘之处 !

好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng


二、lambda 语法

  • lambda 函数的语法只包含一个语句,表现形式如下:
    lambda [arg1 [,arg2,.....argn]]:expression
  • 其中,lambda 是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。
  • 具体介绍如下:
    [arg…] 是参数列表,它的结构与 Python 中函数(function)的参数列表是一样的。
    [arg…] 可以有非常多的形式。例如:
    a, b
    a=1, b=2
    *args
    **kwargs
    a, b=1, *args
    空
    ......
    
    expression 是一个参数表达式,表达式中出现的参数需要在[arg......]中有定义,并且表达式只能是单行的,只能有一个表达式。
    以下都是合法的表达式:
    1
    None
    a + b
    sum(a)
    1 if a >10 else 0
    ......
    

三、lambda 特性

  • lambda 函数是匿名的:
    所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。
  • lambda 函数有输入和输出:
    输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
  • lambda 函数拥有自己的命名空间:
    不能访问自己参数列表之外或全局命名空间里的参数,只能完成非常简单的功能。
    常见的lambda函数示例:
    lambda x, y: x*y			# 函数输入是x和y,输出是它们的积x*y
    lambda:None					# 函数没有输入参数,输出是None
    lambda *args: sum(args)		# 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算)
    lambda **kwargs: 1			# 输入是任意键值对参数,输出是1
    

四、lambda 常见用法

    由于lambda语法是固定的,其本质上只有一种用法,那就是定义一个lambda函数。
    在实际中,根据这个lambda函数应用场景的不同,可以将lambda函数的用法扩展为以下几种:

  • 1、将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
    示例:
    add = lambda x, y: x+y
    相当于定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add就指向了具有加法功能的函数。
    这时我们如果执行add(1, 2),其输出结果就为 3

  • 2、将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
    示例:

    # 为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:
    time.sleep=lambda x: None
    # 这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。
    # 例如:
    time.sleep(3)	# 程序不会休眠 3 秒钟,而是因为lambda输出为None,所以这里结果是什么都不做
    
  • 3、将lambda函数作为参数传递给其他函数。
    典型的用法就是下面我们常见的几种高阶函数。

五、lambda 用法之高阶函数

  • map() 函数:
    描述:
    map() 会根据提供的函数对指定序列做映射
    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
    语法:
    map(function, iterable, ...)
    参数:
    function ----> 函数
    iterable ----> 一个或多个序列
    返回值:
    Python 2.x 版本返回的是列表
    Python 3.x 版本返回的是迭代器
    示例:

    # ===========一般写法:===========
    # 1、计算平方数
    def square(x):
    	return x ** 2
    
    map(square, [1,2
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值