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这种方式的。

时间: 2021-11-01

什么是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就像是一个函数简化器,它允许在所用代码中嵌入函数的定义.它们完全是可选的(一直都可以使用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 函数注解与匿名函数

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

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函数的返回值、匿名函数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关键字的使用方法 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

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 匿名函数与三元运算学习笔记

匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: 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匿名函数/排序函数/过滤函数/映射函数/递归/二分法

一. 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中关于logging模块的学习笔记

python的logging模块 python提供了一个日志处理的模块,那就是logging. 导入logging模块使用以下命令: import logging logging模块的用法: 1.简单的将日志打印到屏幕上 import logging logging.debug("This is debug message") logging.info("This is info message") logging.warning("This is war

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匿名函数及应用示例

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

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

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

Python两个内置函数 locals 和globals(学习笔记)

Python两个内置函数--locals 和globals 这两个函数主要提供,基于字典的访问局部和全局变量的方式. 在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,名字空间可以象Python的字典一样进行访问 每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量.每个模块拥有它自已的名字空间,叫做全局名字空

Python中Random和Math模块学习笔记

由于最近经常使用到Python中random,math和time``datetime模块, 所以决定花时间系统的学习一下 1. math模块 math中的函数不可以用于太过复杂的数的运算, 如果需要复杂数的运行最好使用cmath模块中同名函数, 如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy模块,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用 1.1. 数学常量 math.pi 这个数学常量等于 3.141592... math.e 这个数学常量 e =

Python的Scrapy爬虫框架简单学习笔记

 一.简单配置,获取单个网页上的内容. (1)创建scrapy项目 scrapy startproject getblog (2)编辑 items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html from scrapy.item import