匿名函数—— 一行函数

lambda —— 关键字

x是普通函数的形参(位置,关键字...)可以不接收参数(x可以不写)

:x是普通函数的函数值(只能返回一个数据类型)(:x返回值必须写)

1)此函数不是没有名字,他是有名字的,他的名字就叫做lambda

2)lambda 是定义匿名函数的关键字,相当于函数的def.

3)lambda 后面直接加形参,形参加多少都可以,只要用逗号隔开就行。

func = lambda a, b, *args, sex='alex', c, **kwargs: kwargs

print(func(3, 4, c=666, name='alex'))

结果:{'name': 'alex'}

# 所有类型的形参都可以加,但是一般使用匿名函数只是加位置参数,其他的用不到。

把匿名函数拆开写,如下

def func(a, b, *args, sex='alex', c, **kwargs):

return kwargs

a = func(3, 4, c=666, name='alex')

print(a)

结果:{'name': 'alex'}

4)返回值在冒号之后设置,返回值和正常的函数一样,可以是任意数据类型。(但是想要返回多个元素要以容器的形式返回)

5)匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据

格式:lambda x:x

print((lambda x: x + 6)(5))

结果:11

def func(x):

return x + 6

print(func(5))

结果:11

此处使用列表推导式,返回值是地址

lst = [lambda :i for i in range(5)]

print(lst)

拆解成函数:

lis = []

for i in range(5):

def func():

return i

a = func

lis.append(a)

print(lis)

结果:[, , , , ]

lambda表达式是可以嵌套的

action = (lambdax : (lambda y : x + y))

a = action(10)

a(5)

结果:15

这就是一个用lambda实现的闭包,与普通闭包一样,内嵌lambda表达式可以获得上层lambda函数的变量。

匿名函数的使用

匿名函数通常被用作高阶函数(higher-order function,参数为函数的函数)的参数。比如,几个内置函数:filter(),map(),reduce()。下面我们分别看看这几个函数的用法及达到相同效果的python另一种特征的用法

filter函数

lis = [1, 2, 3, 4]

re = filter(lambda x: x % 2 == 0, lis)

print(list(re))

result1 = [x for x in lis if x % 2 == 0]

print(result1)

结果:[2,4]

[2,4]

map函数

lis = [1, 2, 3]

result = map(lambda x: x*2, lis)# 使用lambda函数

print(list(result))

result1 = [x*2 for x in lis]#使用列表推导式

print(result1)

结果:[2, 4, 6]

[2, 4, 6]

reduce函数

from functools import reduce

lis = [1, 2, 3, 4]

result = reduce(lambda x, y: x+y, lis)

print(result)

结果:10

在Python2.x版本中recude是直接 import就可以的, Python3.x版本中需要从functools这个包中导入

除reduce函数的替代用法比较特殊外,map和filter函数都可以使用列表推导式代替。据说,龟叔本打算将 lambda 和 reduce 都从全局名字空间都移除, 舆论说龟叔不喜lambda 和 reduce最后lambda没删除是因为和一个人给龟叔写了好多封,进行交流然后把lambda保住了

python中匿名函数的关键字_Python匿名函数(lambda函数)相关推荐

  1. python语言中不用来定义函数的关键字_Python 语言中用来定义函数的关键字是

    Python 语言中用来定义函数的关键字是 答:def 调查问卷采集是数据采集人员通过设计具有针对性的问卷,采用方式进行信息采集 答:以上都是 中国大学MOOC: 突出重点,必须以解决问题为目标.也就 ...

  2. python中全局变量和局部变量关键字_Python中全局变量和局部变量的理解与区别

    前言 学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念 但是与其他编程语言又有所不同 全局变量与局部变量两者的本质区别就是在于作用 ...

  3. python中打印所有的关键字_python 查看所有的关键字

    一 查看所有的关键字:help("keywords") Here is a list of the Python keywords.  Enter any keyword to g ...

  4. python自定义函数的关键字_python学习之--自定义函数:

    Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...

  5. python中全局变量和局部变量关键字_Python中都全局变量和局部变量

    Python中都全局变量和局部变量 Python中都全局变量和局部变量 定义 全局变量:函数体之外定义的变量 局部变量:函数体之内定义的变量 下述代码中,t是全局变量,m是局部变量 t = 1 def ...

  6. 在python子程序中、使用关键字_Python 的控制和函数

    控制if else for while 函数 函数的定义 函数一词来源于数学,但编程中的函数概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BAS ...

  7. 在python中可以用什么关键字来声明一个类_python里的raise是什么意思

    我们在开发当中经常会遇到一些未知或已知的错误,比如用requests发送请求时可能会出现异常,或者某个程序计算时出现分母为0的情况.面对各种奇形怪状的错误,高级语言都会有一个抛出错误的机制.在Pyth ...

  8. 【循序渐进学Python】Python中的循环(一)——for循环(嵌套)与range函数

    [循序渐进学Python]Python中的循环(一)--for循环(嵌套)与range函数 在前面博客中我们介绍了Python程序结构的三要素,其中就提到了循环,而今天我们就来看看for循环和for循 ...

  9. python中序列是什么意思_python序列是指什么

    所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们. 在 Python 中,序列类型包括字符串.列表.元组.集合和字典,这些序列支持以 ...

最新文章

  1. php无限极分类设计,递归方式已经淘汰了
  2. 复制单级文件夹【应用】
  3. netcore 编译 html,Asp.Net Core中的@ Html.Action
  4. 基于ARM Cortex-M和Eclipse的SWO单总线输出
  5. 使用Notepad++自动排版代码
  6. 算法笔记_172:历届试题 波动数列(Java)
  7. SQL常用语句(普通查询+条件查询)
  8. python地震数据处理_python 地震数据可视化
  9. ros重置后地址_RouterOS中BGP软重新配置 - ROS软路由论坛 - ROS教程 - RouterOS - ROS之家 - ROS脚本生成器 - Powered by Discuz!...
  10. CORS Filter
  11. 翼支付个人账单查询接口
  12. 圣诞表白html,Pyhton表白代码——浪漫圣诞节
  13. Codeforces Round #827 (Div. 4) D - F
  14. python小数乘法计算_小数乘法100道
  15. Sharding-jdbc连接kingbasev8r6跨表分页
  16. K8S 常见面试题总结
  17. GIT - 安装、设置和帮助
  18. PIC 1508 DAC使用
  19. [SSD固态硬盘技术 7] 主控核心设计
  20. 知乎:为什么我的成绩那么好,最终还是成了一个没用的人

热门文章

  1. 成长日记——初识C语言
  2. 211高校导师解散微信群直言:和你们没感情,江湖不见!校方回应
  3. html 直接播放wma,苹果Mac电脑怎么播放.wma和.wmv格式的文件?
  4. 【路径规划】汽车零部件循环取货路径优化(三维装载约束)【含Matlab源码 1100期】
  5. 安卓去除虚拟按键(home键,返回键,列表键)
  6. Python分析了 7 万款 App,万万没想到
  7. 一半图片一半视频如何制作?图片加视频,超炫效果刷爆朋友圈!
  8. ATFX国际:瑞士信贷被曝出现流动性危机,欧元受惊大跌
  9. CODECOGS在线LaTeX公式编辑器收费陷阱!
  10. 反向传播算法原理(BP算法)(直观易懂)