Python入门篇-匿名函数

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.匿名函数概述

1>.什么是匿名函数

  匿名,即没有名字
  
  匿名函数,即没有名字的函数

2>.匿名函数编写格式

  Python借助Lambda表达式构建匿名函数

  匿名函数格式如下:
    lambda 参数列表:表达式

3>.匿名函数注意事项

(1)使用lambda关键字来定义匿名函数

(2)参数列表不需要小括号

(3)冒号是用来分割参数列表和表达式的

(4)不需要使用return,表达式的值,就是匿名函数返回值

(5)lambda表达式(匿名函数)只能写在一行上,被称为单行函数

(6)匿名函数用途:在高阶函数传参时,使用lambda表达式,往往能简化代码

二.匿名函数定义

1>.匿名函数的定义和调用

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com l1 = lambda x : x ** 2 #使用lambda关键字定义匿名函数,我们可以给它复制给一个变量 res = l1(5) #调用匿名函数 print(res) print((lambda x:x **2)(5)) #当然,上面3行代码我们可以写成一行哟~ #以上代码执行结果如下:
25
25

2>.不推荐使用的匿名函数案例

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com foo = lambda x,y :(x + y) ** 2 #定义一个匿名函数,我们给它复制给一个变量,其实我们并不推荐这样使用 print("foo:{}".format(foo(10,20))) #调用我们定义的匿名函数 def bar(x,y): #我们不推荐使用上面的方法,而是建议使用普通函数定义比价复杂的功能
return (x + y) ** 2 print("bar:{}".format(bar(10,20))) #以上代码执行结果如下:
foo:900
bar:900

3>.一些简单的匿名函数案例

 #!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
#EMAIL:y1053419035@qq.com print((lambda :0)()) print((lambda x, y=3: x + y)(5)) print((lambda x, y=3: x + y)(5, 6)) print((lambda x, *, y=30: x + y)(5)) print((lambda x, *, y=30: x + y)(5, y=10)) print((lambda *args: (x for x in args))(*range(5))) print((lambda *args: [x+1 for x in args])(*range(5))) print((lambda *args: {x+2 for x in args})(*range(5))) print([x for x in (lambda *args: map(lambda x: x+1, args))(*range(5))]) print([x for x in (lambda *args: map(lambda x: (x+1,args), args))(*range(5))]) #以上代码执行结果如下:
0
8
11
35
15
<generator object <lambda>.<locals>.<genexpr> at 0x000000000221D5C8>
[1, 2, 3, 4, 5]
{2, 3, 4, 5, 6}
[1, 2, 3, 4, 5]
[(1, (0, 1, 2, 3, 4)), (2, (0, 1, 2, 3, 4)), (3, (0, 1, 2, 3, 4)), (4, (0, 1, 2, 3, 4)), (5, (0, 1, 2, 3, 4))]

 3>.匿名函数使用案例

 #!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie from collections import defaultdict d = defaultdict(lambda :0) for k in 'abcd':
for j in range(3):
d[k] += 1 print(d)
print(d.keys())
print(d.values()) #以上代码输出结果如下:
defaultdict(<function <lambda> at 0x000001BD1A39D948>, {'a': 3, 'b': 3, 'c': 3, 'd': 3})
dict_keys(['a', 'b', 'c', 'd'])
dict_values([3, 3, 3, 3])

Python入门篇-匿名函数的更多相关文章

  1. Python入门篇-生成器函数

    Python入门篇-生成器函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.生成器概述 1>.生成器generator 生成器指的是生成器对象,可以由生成器表达式得到, ...

  2. python 基础篇 匿名函数

    匿名函数基础 首先,什么是匿名函数呢?以下是匿名函数的格式: lambda argument1, argument2,... argumentN : expression 我们可以看到,匿名函数的关键 ...

  3. Python入门篇-高阶函数

    Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数  1>.First Class Object 函数在Python中是一等公民 函数也 ...

  4. Python入门篇-函数、参数及参数解构

    Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...

  5. Python入门篇-面向对象概述

    Python入门篇-面向对象概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.语言的分类 面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 面向过程 做一件事情,排出个 ...

  6. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  7. Python入门篇-functools

    Python入门篇-functools 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.reduce方法 reduce方法,顾名思义就是减少 reduce(function,se ...

  8. Python入门篇-类型注解

    Python入门篇-类型注解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数定义的弊端 1>.动态语言很灵活,但是这种特性也是弊端 Python是动态语言,变量随时可 ...

  9. Python入门篇-装饰器

    Python入门篇-装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.装饰器概述 装饰器(无参) 它是一个函数 函数作为它的形参 返回值也是一个函数 可以使用@functi ...

随机推荐

  1. lnmp卸载删除多余的php版本

    /etc/init.d/php-fpm5.3 stoprm -rf /usr/local/php5.3rm -f /etc/init.d/php-fpm5.3rm -f /usr/local/ngin ...

  2. POJ-动态规划-背包问题模板

    背包问题模板 一.0-1背包 状态:背包容量为j时,求前i个物品所能达到最大价值,设为dp[i][j].初始时,dp[0][j](0<=j<=V)为0,没有物品也就没有价值. 状态转移方程 ...

  3. ECharts 避免变窄

    var roomPercentChart = echarts.init(document.getElementById('room_percent')); function ajaxGetRoomPe ...

  4. 收藏单词TOEFL备份托福英语

    TOEFL托福词汇串讲(文本) alchemy(chem-化学)n. 炼金术 chemistry 化学 alder 赤杨树 联想:older 老人坐在赤杨树下 sloth 树懒 algae n.海藻 ...

  5. appium 方法整理

    1.contexts contexts(self):     Returns the contexts within the current session.     返回当前会话中的上下文,使用后可 ...

  6. [Atcoder AGC037E]Reversing and Concatenating

    题目大意:有一个长度为$n$的字符串$S$,有$k$次操作,每次操作为把$S$变为$SS^R$(即翻转后再接在一起),然后从中选取一段长度为$n$的字串.问$k$次操作后,字典序最小的一种是什么.$n ...

  7. logstash解析tomcat的catalina.out日志字段

    filter { mutate { remove_field => ["@version","prospector","input", ...

  8. QRCode.js:使用 JavaScript 生成微信二维码

    https://www.runoob.com/w3cnote/javascript-qrcodejs-library.html 什么是 QRCode.js? QRCode.js 是一个用于生成二维码的 ...

  9. mssql server 排序 以及like语句

    当我们按照某个字段排序时,通常使用order by语句,如果该字段存在null值,则会把null值的这条放到最上面, 那我们是否有办法解决呢? 答案是肯定的: ORDER BY CASE WHEN O ...

  10. 2019 猎豹移动java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.猎豹移动等公司offer,岗位是Java后端开发,最终选择去了猎豹移动. 面试了很多家公司,感觉大部分公司考察的点 ...