Python 匿名函数lambda 详情

目录
  • 1.前言
  • 2.如何使用 lambda
  • 3.总结

1.前言

在 Python 中,说到函数,大家都很容易想到用 ​​def​​ 关键字来声明一个函数:

def Hello():
    # function body

然后我们可以在​添加由圆括号括起来的参数列表。函数体内可能有很多行代码,里面有尽可能多的语句和表达式。​

除了 ​​def​​​ 语句定义函数以外,还有一种生成函数对象的表达式形式: ​​lambda​​ 表达式,这个表达式创建了一个能够随时调用的函数。

有时声明一个函数只有一条语句,比如:

def square(x):
    return x*2

(没有​​lambda​​​  函数返回函数本身而不是将其赋值给一个变量名。所以它也被称为匿名函数函数名)。 ​​lambda​​​  的一般形式是关键字 ​​lambda​​ 后面跟上一个或者多个参数,之后是一个冒号,再之后是一个表达式:

lambda argument1, argument2, ... argumentN: expression using argument

lambda 表达式所返回的函数对象与 def 创建并赋值后的函数对象工作起来是完全一样。一个 lambda 函数可以有尽可能多的参数,但函数体必须是一个表达式。

2.如何使用 lambda

​​lambda​​  只能包含一个表达式,通常用作内联函数的定义,或者用作推迟一些代码的执行。

再来看上面的平方的例子:

def square(x):
    return x*x

a_list = [1, 2, 3, 4, 5]
aa_list = list(map(square, a_list))
print(aa_list) # [1, 4, 9, 16, 25]

上述代码就是 lambda 函数使用的好地方,使用更少的代码行,并且可以避免创建仅使用一次的命名函数(然后必须存储在内存中)。​您可以编写一个将其参数平方的 lambda 函数: ​​lambda x: x*2​​ ,并将其与 map 函数一起使用以将列表中的所有元素进行平方运算:

a_list = [1, 2, 3, 4, 5, 6]
aa_list = list(map(lambda x: x*2, a_list))
print(aa_list) # [2, 4, 6, 8, 10, 12]

如果在短时间需要一个小函数,​可以使用 lambda 函数——例如作为 map 或 filter 等高阶函数的参数,可以我们利用 lambda 来筛选偶数:

a_list = [1, 2, 3, 4, 5, 6]
aa_list = list(filter(lambda x: x%2==0, a_list))
print(aa_list) # [2, 4, 6]

​lambda 函数是在使用它的地方定义的,这样内存中就没有命名函数。如果只在一个地方使用了一个函数,那么使用 lambda 函数来避免混乱是有意义的。

还可以从函数返回 lambda 函数。如果您需要创建多个乘以数字的函数,例如加倍或三倍等,lambda 可以提供帮助。您可以创建一个函数 multiplyBy ,而不是创建多个函数,如下所示,然后使用不同的参数多次调用此函数以创建双倍、三倍等函数:

def muliplyBy (n):
  return lambda x: x*n
  
double = multiplyBy(2)
triple = muliplyBy(3)
times10 = multiplyBy(10)

​​lambda 函数从父函数获取值 n,因此在 double 中 n 的值为 2,在三倍中为 3,在 times10 中为 10。现在使用参数调用这些函数将乘以该数字。

double(6)
> 12
triple(5)
> 15
times10(12)
> 120

如果您在这里没有使用 lambda 函数,则需要在 ​​multiplyBy​​  中定义一个不同的函数,

如下所示:

def muliplyBy (x):
  def temp (n):
    return x*n
  return temp

使用 lambda 函数使用一半的行并使其更具可读性。

3.总结

  • lambda 是一个表达式,而不是语句。因此,lambda 能够出现在 Python 语法不允许 def 出现的地方。例如在一个列表字面量中或者函数调用的参数中,而使用 def 语句虽然函数能通过名称引用,但是必须在其他地方创建,作为一个表达式,lambda 返回一个值(一个新的函数),可以选择性地被赋值给一个变量值。
  • lambda 的主体是一个单独的表达式,而不是一个代码块。 lambda 的主体可以像 def 函数体的 return 语句一样,可以将结果写出一个裸露的表达式,而不是显式地返回。
  • lambda 是一个编写简单的函数而设计的,而 def 用来处理更大的任务。

到此这篇关于 Python 匿名函数lambda 的文章就介绍到这了,更多相关 Python 函数lambda 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python ---lambda匿名函数介绍

    lambda特性:"一个语法,三个特性,四个用法" 一个语法 在Python中,lambda的语法是唯一的.其形式如下: lambda argument_list: expression 其中,lambda是Python预留的关键字,argument_list和expression由用户自定义.具体介绍如下. 1.这里的argument_list是参数列表.它的结构与Python中函数(function)的参数列表是一样的.具体来说,argument_list可以有非常多的形式.例如:

  • python匿名函数lambda原理及实例解析

    这篇文章主要介绍了python匿名函数lambda原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 #-*- coding:utf-8 -*- #__author__ = "www.iplaypy.com" # 普通python函数 def func(a,b,c): return a+b+c print func(1,2,3) # 返回值为6 # lambda匿名函数 f = lambda a,b,c:a+b+c

  • python lambda表达式(匿名函数)写法解析

    这篇文章主要介绍了python lambda表达式(匿名函数)写法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 # lambda表达式,为了解决简单函数的情况,如: def func(a1,a2): return a1 + a2 func = lambda a1,a2:a1+a2 # 上面这两个是一样的 def func1(a1,a2): return a1 + a2 func2 = lambda a1,a2:a1+a2 wdc = fu

  • 详解Python匿名函数(lambda函数)

    匿名函数lambda Python使用lambda关键字创造匿名函数.所谓匿名,意即不再使用def语句这样标准的形式定义一个函数.这种语句的目的是由于性能的原因,在调用时绕过函数的栈分配.其语法是: lambda [arg1[, arg2, ... argN]]: expression 其中,参数是可选的,如果使用参数的话,参数通常也会在表达式之中出现. 下面举例来说明lambda语句的使用方法(无参数). # 使用def定义函数的方法 def true(): return True #等价的l

  • Python3匿名函数lambda介绍与使用示例

    概述 匿名函数,顾名思义即没有名称的函数,和def定义的函数的最大区别在于匿名函数创建后返回函数本身(即匿名函数不需要return来返回值),表达式本身结果就是返回值,而def创建后则赋值给一个变量名,在Python中,我们利用关键词lambda创建匿名函数,以下是匿名函数lambda表达式的形式: lambda arg1,arg2,.....argn:expression 以下为一些lambda的特点: lambda 是一个表达式,而不是一个语句,即我们可以在任何可以使用表达式的场景一样使用l

  • python中lambda匿名函数详解

    在Python中,不通过def来声明函数名字,而是通过lambda关键字来定义的函数称为匿名函数 关键字lambda表示匿名函数 语法 lambda 参数:表达式 先写lambda关键字,然后依次写匿名函数的参数,多个参数中间用逗号连接,然后是一个冒号,冒号后面写返回的表达式 lambda函数比普通函数更简洁 匿名函数有个好处:函数没有名字,不必担心函数名冲突 匿名函数与普通函数的对比 : def sum_func(a, b, c): return a + b + c sum_lambda =

  •  Python 匿名函数lambda 详情

    目录 1.前言 2.如何使用 lambda 3.总结 1.前言 在 Python 中,说到函数,大家都很容易想到用 ​​def​​ 关键字来声明一个函数: def Hello():     # function body 然后我们可以在​添加由圆括号括起来的参数列表.函数体内可能有很多行代码,里面有尽可能多的语句和表达式.​ 除了 ​​def​​​ 语句定义函数以外,还有一种生成函数对象的表达式形式: ​​lambda​​ 表达式,这个表达式创建了一个能够随时调用的函数. 有时声明一个函数只有一

  • python匿名函数用法实例分析

    本文实例讲述了python匿名函数用法.分享给大家供大家参考,具体如下: 匿名函数特点: 1.只能有一个表达式 2.不用return,默认return结果 3.不需要名字,防止函数名重复 4.是对象,可赋值给一个变量 经典例子 >>> map(lambda x : x*x, [2, 4, 8, 9]) [4, 16, 64, 81] python匿名函数lambda格式: lambda 参数(可以有默认值) : 表达式 # 无参 >>> lambda : 'hello

  • python基础教程之匿名函数lambda

     python lambda 当我们在使用函数时,有时候,并不需要显示的定义一个函数,我们可以使用匿名函数更加方便,在Python中对匿名函数也提供了支持. 比如当我们想计算两个数a,b之和时,即f(a,b) = a + b.我们可以有两种方法完成,第一种就是显示的定义一个函数f(x,y),然后将参数传进去得到结果.第二种方式就是使用匿名函数了. f = lambda x,y:x+y >>>f(1,2) 3 匿名函数lambda x,y:x+y实际上就是: def f(x, y): re

  • Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析

    本文实例讲述了Python函数的返回值.匿名函数lambda.filter函数.map函数.reduce函数用法.分享给大家供大家参考,具体如下: 函数的返回值: 函数一旦执行到   return,函数就会结束,并会返回return 后面的值,如果不使用显式使用return返回,会默认返回None . return None可以简写为   return. def my_add(x,y): z=x+y return z print(my_add(1,2))##打印的是返回值 def my_add_

  • Python浅析匿名函数lambda的用法

    目录 lambda函数的定义    Lambda函数在Python中 lambda函数的定义    lambda函数是Python中常用的内置函数,又称为匿名函数.和普通函数相比,它只有函数体,省略了def和return,使得结构看起来更精简.其基本调用语法如下: lambda [var1 [,var2,…varn]]:expression [var1 [,var2,…varn]]:形式参数,可以理解为入参,供表达式使用. expression:函数表达式,其结果为lambda函数的返回值. L

  • Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n**n print(f(10)) lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数 语法: 函数名 = lambda 参数: 返回值 注意: 1. 函数的参数可以有多个. 多个参数之间用逗号隔开 2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据 3

  • Python匿名函数及应用示例

    本文实例讲述了Python匿名函数及应用.分享给大家供大家参考,具体如下: lambda关键词能创建?型匿名函数.这种函数得名于省略了def声明函数的标准步骤. 代码如下: #定义lambda函数 sum = lambda arg1,arg2:arg1+arg2 #调用函数 totle = sum(3,5) print ('totle = %d'%totle) 运行如下 totle = 8 Lambda函数能接收任何数量的参数但只能返回一个表达式的值 匿名函数不能直接调用print,因为lamb

随机推荐