Python匿名函数详情

1、匿名函数

在python中,除了一般使用def定义的函数外,还有一种使用lambda定义的匿名函数。这种函数可以用在任何普通函数可以使用的地方,但在定义时被严格限定为单一表达式。从语义上讲,它只是普通函数的语法糖。

如果我们需要定义一个特别简单的函数,例如

def add(a, b):
    s = a + b
    return s

这就出现问题了,这么优雅的Python怎么可以出现这种难看的代码呢,有没有办法可以将其简化为1行代码呢?这么优雅的Python肯定有办法将其简化的方法啊!这要用到匿名函数了。

python中使用 **lambda**关键字来创建匿名函数。

语法格式

lambda [参数1 [,参数2,..参数n]]:表达式

lambda 参数列表:return [表达式] 变量

由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收

示例代码如下:

news_add = lambda a, b: a + b
# 上面的那个等于
def news_add_old(a, b):
    return a + b

x = news_add_old(5, 10)
y = news_add(5, 10)  # 调用匿名函数
print(x, y)  # 15 15

2、内置函数使用

结合内置函数使用

list1 = [{"a": 10, "b": 20}, {"a": 20, "b": 20}, {"a": 50, "b": 20}, {"a": 6, "b": 20}, {"a": 9, "b": 20}]

# 那个列表中的a最大
max_value = max(list1, key=lambda x: x["a"])
print(max_value)

# 如果用普通的函数写就多了几行
def func(di):
    return di["a"]
max_value = max(list1, key=func)  # 这里不能加()不然就表示调用了
print(max_value)

将匿名函数当做参数

def func(a, b, fun):
    s = fun(a, b)
    return s

z = func(5, 10, lambda a, b: a + b)
print(z)  # 15

lambda可以省去定义函数的过程,让代码更加精简,而且不用考虑命名问题,但是在PEP8规范里面是不推荐用lambda这种方式的。

(0)

相关推荐

  • python基础之引用和匿名函数

    a=1 #1 为对象, def func(x): print('x的地址{}'.format(id(x))) x=2 print('x的地址{}'.format(id(x))) pass # 调用函数 print('a的地址:{}'.format(id(a))) func(a) # 不可变类型 a=1 #1 为对象, ##传递的是一个对象的引用,并不是一个值 def func(x): print('x的地址{}'.format(id(x))) x=2 print('x的地址{}'.format(

  • 深入浅析Python 函数注解与匿名函数

    函数注解与匿名函数 关于函数参数的定义,调用以及函数参数的内容,在下面的文章中已经做了初步的介绍,有需要的可以访问进行了解: Python 函数 函数注解 在编写函数,当下肯定清楚函数如何使用的.若是函数较为复杂,过段时间,编写者有可能需要花一段时间去重新了解函数的使用,那其他使用者也同样会遇到这样的困惑. 所以当编写完函数后,可以为函数的参数添加一些额外的信息.这里给函数参数添加注解,能够提示程序员如何正确使用这个函数.如下示例: def add(x:int, y:int) -> int: '

  • 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基础之匿名函数详解

    目录 1.匿名函数介绍 2.语法 3.使用场景 4.匿名函数和普通函数的对比 5.匿名函数的多种形式 6.lambda 作为一个参数传递 7. lambda函数与python内置函数配合使用 8.lambda 作为函数的返回值 1.匿名函数介绍 匿名函数指一类无须定义标识符的函数或子程序.Python用lambda语法定义匿名函数,只需用表达式而无需申明. 在python中,不通过def来声明函数名字,而是通过 lambda 关键字来定义的函数称为匿名函数. lambda函数能接收任何数量(可以

  • 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 匿名函数相关总结

    写python的时候,大多数场景下,我都是if else选手,因为最核心的逻辑几乎都是通过if else语句来实现的.关于匿名函数这块儿,其实可以用常见的循环等方法来实现,但是如果你想成为一个python的高手,匿名函数还是必须要了解的.因为匿名函数,能够让你的代码足够简洁, 01  什么是匿名函数? 在python中,匿名函数,顾名思义,就是没有名字的函数,它主要用在那些只使用一次的场景中.如果我们的程序中只需要调用一次某个简单逻辑,把它写成函数还需要先定义.取函数名字等一些列操作,这种场景下

  • python匿名函数的实例用法

    一般情况下,lambda就像是一个函数简化器,它允许在所用代码中嵌入函数的定义.它们完全是可选的(一直都可以使用def替换它们),但只需嵌入少量可执行代码,就能使代码结构更加简洁,从而大大简化代码复杂性,提高代码可读性. 1.优点 (1)减少重复代码: (2)模块化代码. 2.实例 # def函数 def square(x): return x**2 squared = map(square, [1, 2, 3, 4, 5]) # lambda函数 squared = map(lambda x:

  • python 匿名函数与三元运算学习笔记

    匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y):     return x*y print(calc(2,3))   # 换成匿名函数   calc = lambda x,y:x*y print(calc(2,3)) 你也许会说,用上这个东西没感觉有毛方便呀, ....呵呵,如果是这么用,确实没毛线改进,不过匿名函数主要是和其它函数搭配使用的呢,如下 res = map(lambda x:x**2,[1,2,3,4,5]) print(list(re

  • 什么是Python中的匿名函数

    匿名函数 lambda x , y : x+y 1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的. 2.匿名函数的参数规则.作用域关系与有名函数是一样的. 3.匿名函数的函数体通常应该是 一个表达式,该表达式必须要有一个返回值. f=lambda x,n:x ** n print(f(2,3)) lambda匿名函数的应用:**max,min,sorted,map,reduce,filter** 求工资最高的人:max salaries={ 'egon':3000, 'alex'

  • python匿名函数的使用方法解析

    一.lambda关键字的使用方法 func=lambda x:x+1 print(func(1)) #2 print(func(2)) #3 #以上lambda等同于以下函数 def func(x): return(x+1) 注释:可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体.在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. 二.Python中,也有几个定义好的全局函数方便使用的,filt

随机推荐