文档章节

零基础学python-18.6 lambda表达式快速入门

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 593
阅读 4
收藏 0

这一章节我们来简单讨论lambda表达式作为入门

在python里面,除了def定义函数外,它还提供另外一种形式来完成函数能够做的事情,就是lambda表达式。

1.lambda表达式的表现形式:

lambda arg1,arg2....argN:expression using args

>>> func=lambda x,y,z :x+y+z
>>> func(1,2,3)
6
>>>


2.lambda是一个表达式,而不是语句,它返回的是一个函数

lambda是一个表达式,它实现的功能比def少很多,它返回的不是确定的值,而是一个函数。

它的应用场景一般是在def不能出现的地方,例如列表常量或者函数调用的参数中

>>> func=lambda x,y,z :x+y+z
>>> func(1,2,3)
6
>>> type(func)
<class 'function'>
>>>


上面的lambda表达式返回的是一个类型是函数的对象

下面是上面的等价def代码:

>>> def test(x,y,z):
	return x+y+z

>>> test(1,2,3)
6
>>>


下面的代码作用在函数的参数里面:

>>> aList=(lambda x='a',y='b',z='c':x+y+z)
>>> aList
<function <lambda> at 0x01E60AE0>
>>> aList()
'abc'
>>> aList('e')
'ebc'

 

而且,lambda表达式具备def的一些特性,例如,特定参数名

>>> aList=(lambda x='a',y='b',z='c':x+y+z)
>>> aList()
'abc'
>>> aList(z='d')
'abd'
>>>


 

3.lambda的主体是一个表达式,而不是代码块

lambda表达式实现的逻辑非常小,它设计的目的是限制嵌套,使逻辑集聚,lambda是为了编写小的功能而设计,def是实现比较大的功能而设计

 

4.lambda表达式遵循作用域搜查法则,说白点就是在def里面嵌套一个小的def

>>> def test(N):
	return lambda x :x**N

>>> sqrt=test(2)
>>> sqrt(2)
4
>>> sqrt(3)
9
>>> trip=test(3)
>>> trip(2)
8
>>> trip(3)
27
>>>


通过lambda表达式,我们可以使得一个函数能够得出非常多的多态函数,例如上面,通过test,即可以实现平方算法,也可以实现立方算法或者其他幂算法

 

总结:这一章节简单讨论了lambda表达式的一些基础,下一章节我们将会结束为什么使用lambda?

 

这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/48600381

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
私信 提问
Python基础总结成千行代码,让Python入门更简单!

只要学会这千行代码,不管你是零基础还是弱基础或是没有接触过编程,都可以快速入门Python!当时我就不信邪啊,等我看完之后,即使作为一个Python老鸟了,还是领会到了很多教授他的独特见解!...

糖宝lsh
09/10
0
0
Python学习资料篇

Python学习资料网络上比较多,看到好的资源,不及时记录下来,下次就找不到了,我把知乎上好的回到收藏汇总到这里,以便自己随时查看,包括Python入门书籍,网站,项目,官方文档,下载资源等...

BjarneCpp
2017/12/03
0
0
给伸手党的福利:Python 新手入门引导

这是一篇 Python 入门指南,针对那些没有任何编程经验,从零开始学习 Python 的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。 在这个信...

crossin
06/15
0
0
吐血推荐 python视频教程下载合集

吐血分享Python最新视频教程 零基础入门学习Python3 链接: http://pan.baidu.com/s/1kTwuFJ5 密码: tjgu 解压密码:2次方学习 快速掌握 Python 基础教程 链接: http://pan.baidu.com/s/1pJPsL...

helloeveybody
2014/12/10
5.4K
4
为什么python突然变得这么火了?

可能会有一种感觉python突然之间变得这么火热了,个人感觉还是雷声大雨点小,真正用pytho落地的东西还是少,不可否认的python前途无量,现在人工智能的调用框架选择了python。所以目前阶段选...

Python燕大侠
05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
26分钟前
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
26分钟前
1
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
26分钟前
1
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
26分钟前
1
0
java框架学习日志-3

这章主要是补充一些ioc创建对象的方式,ioc容器在写好<bean></bean>的时候就已经创建对象了。在之前的例子中,一直都是无参的构造方法。下面给出有参的构造方法的对象的创建,没有什么难点重...

白话
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部