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. python 实现一个简单tcp epoll socket

    python 实现一个epoll server #!/usr/bin/env python #-*- coding:utf-8 -*- import socket import select impo ...

  2. WeQuant教程—1.3 利用回测工具降低交易风险

    量化系统投入实际使用之前,人们会希望提前测试交易的效果.这个期间往往涉及代码的改动和参数的调整.最常见的做法是将历史数据输入量化系统,让量化系统根据既定的交易逻辑进行操作,观察和分析交易结果,找到问题 ...

  3. element ui表格常用功能如:导出 新增 删除 多选 跨页多选 固定表头 多级表头 合并行列 等常见需求

    <template> <div class="table-cooperte"> <el-table :data="tableData&quo ...

  4. Docker---数据卷Volume的简单使用(使用DockerFile实现)

    DockerFile是什么?Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像.它们简化了从头到尾的流程并极大的简化了部署工作.Dockerfile从FR ...

  5. 【转帖】极简Docker和Kubernetes发展史

    极简Docker和Kubernetes发展史 https://www.cnblogs.com/chenqionghe/p/11454248.html 2013年 Docker项目开源 2013年,以A ...

  6. [转帖]Zookeeper

    Zookeeper https://www.cnblogs.com/zhang-qc/p/8877082.html   Zookeeper其实是一种为分布式应用所设计的高可用.高性能且一致的开源协调服 ...

  7. java-工厂

    class Mouse{ public void sayHi(){}; } class DellMouse extends Mouse { @Override public void sayHi() ...

  8. 类的练习2——python编程从入门到实践

    9-7 管理员: 管理员是一种特殊的用户.编写一个名为Admin的类,并让它继承练习9-3或者9-5的User类.添加一个名为privileges的属性,用于存储一个由字符串(如"can a ...

  9. Django框架之第四篇(视图层)--HttpRequest对象、HttpResponse对象、JsonResponse、CBV和FBV、文件上传

    视图层 一.视图函数 一个视图函数,简称视图,是一个简单的python函数,它接收web请求并且会返回web响应.响应可以是一张网页的html,一个重定向,或者是一张图片...任何东西都可以.无论是什 ...

  10. JS实现简单的图片透明度循环变化(渐变)

    找了好多,都是由100到0就结束了,到头来自己魔改,以下就是源码. div中加入img,js添加函数,完事(调用),取名后面加个1是为了避免冲突 <!DOCTYPE HTML> <h ...