专栏首页菜鸟致敬Python匿名函数快速入门

Python匿名函数快速入门

定义

匿名函数,顾明思义就是一种隐匿了名字的函数。Python中使用lambda语法定义匿名函数,只需用表达式而无需申明。

lambda语法的定义如下:

lambda [arg1 [,arg2, ... argN]] : expression

除了没有函数名,其语法与一般函数的定义相同。(名字即为常说的标识符)

匿名函数优点

1.不用取名称,因为给函数取名是比较头疼的一件事,特别是函数比较多的时候;

2.可以直接在使用的地方定义,如果需要修改,直接找到修改即可,方便以后代码的维护工作;

3.语法结构简单,不用使用 def 函数名(参数名): 这种方式定义,直接使用lambda 参数:返回值 定义即可。

lambda这个名称来自于LISP,而LISP则是从lambda calculus(一种符号逻辑形式)取这个名称的。在Python中,lambda作为一个关键字,作为引入表达式的语法。想比较def函数,lambda是单一的表达式,而不是语句块!你仅能够在lambda中封装有限的业务逻辑,这样设计的目的:让lambda纯粹为了编写简单的函数而设计,def则专注于处理更大的业务。

与普通函数差异

普通函数:

#普通函数,带俩参数的写法  
def add(x,y):  
    return x*y  
rs = add(10,20)  
print(rs)

匿名函数:

#带有俩参数的匿名函数  
b = lambda x,y:x*y  
rs = b(10,20)  
print(rs)

详解:这里的b并不是匿名函数的名字,可类比js中var fun1=function(){}与function fun2(){}中的不同,fun1本质上是拿到了定义函数的内存地址,通过地址访问来调用函数,而fun2这里本身便是function定义的标识符。

通俗易懂:将函数比作一座房子,我们需要进入房子即调用函数,只需要有房子的钥匙即可,并不需要自己是房子的主人,而这里,fun1就是外来者,但是他拥有钥匙,因而可以进入房子,而fun2是房子本身的主人,自然也拥有钥匙,也可以进入房子。

而匿名函数就是一个没有主人的房子!只需要有钥匙即可进入。

实例

#计算存放100个数字的列表的每一个数字的平方,返回一个新的列表  
print(list(map(lambda x:x*x,[x for x in range(100)])))

执行结果:

[1, 4, 9, 16, 25, ......]

推荐阅读:

[菜鸟致敬⑨] 排版建议

免主机搭建动态博客WordPress

[菜鸟致敬⑤] 极简搭建 hexo博客

本文分享自微信公众号 - Python与MySQL(Python_Rick)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python|堆排序

    外排序 :由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;

    Rare0716
  • matlab | 二值形态学处理

    图像的二值形态学处理,是利用集合论的思想,能够简化图像数据,保持基本形状特征,除去不相干的结构,此外还能并行实现。

    Rare0716
  • 建议收藏 | 专业的MySQL开发规范

    命名规范的对象是指数据库SCHEMA、表TABLE、索引INDEX、约束CONSTRAINTS等的命名约定

    Rare0716
  • Python第十三课:函数II

    在上一课中我们主要学习了函数的输入,我们现在结合前面学到的关于文件的操作来写一些函数达到处理文件的功能。

    HuangWeiAI
  • C语言之函数

      结构化程序设计主张按功能来分析需求,主要原则自顶向下,逐步求精,模块化等。 主张按功能把软件系统逐步细分,每个功能都负责对数据进行一次处理,每个功能接收一些...

    互联网金融打杂
  • JavaScript深入浅出第2课:函数是一等公民是什么意思呢?

    看到一篇讲JavaScript历史的文章里面提到:JavaScript借鉴Scheme语言,将函数提升到"一等公民"(first class citizen)的...

    Fundebug
  • Kotlin中的函数

    函数还可以用中缀表示法调用,当他们是成员函数或扩展函数,只有一个参数,用 infix关键字标注

    deep_sadness
  • 干货丨C++中的虚函数

    所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。

    聚沙成塔
  • JavaScript 编程精解 中文第三版 三、函数

    ApacheCN_飞龙
  • 前端学习(33)~js学习(十):函数

    从方式二的举例中可以看出:所谓的“函数表达式”,其实就是将匿名函数赋值给一个变量。

    Vincent-yuan

扫码关注云+社区

领取腾讯云代金券