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. C# web项目乱码问题解决

    在 web.config 文件中添加代码  <globalization requestEncoding="GB2312" responseEncoding="GB ...

  2. .net桌面程序或者控制台程序使用NLog时的注意事项

    Nuget添加NLog 添加nlog.config文件,并选择属性->始终复制 不选择始终复制,编译后nlog.config是没有的. 具体使用: private static readonly ...

  3. Git 查看更改

    当向仓库中添加文件或删除文件后,可能需要查看更改. 查看更改有多种方式. 1.查看状态 # git status 结果 1 2 # 位于分支 master 无文件要提交,干净的工作区 2.查看日志 # ...

  4. spring security实现记录用户登录时间等信息

    目录 spring security实现记录用户登录时间等信息 一.原理分析 二.实现方式 2.1 自定义AuthenticationSuccessHandler实现类 2.2 在spring-sec ...

  5. Tomcat 的端口被占用的解决办法

    在dos下,输入  netstat   -ano|findstr  8080 //说明:查看占用8080端口的进程 显示占用端口的进程 taskkill  /pid  6856  /f //说明,运行 ...

  6. 027 SSM综合练习03--数据后台管理系统--product-list.jsp和main.jsp页面制作

    1.product-list.jsp页面制作 (1)创建一个product-list1.jsp文件,清空,只保留 <%@ page contentType="text/html;cha ...

  7. Fineui alert去掉关闭按钮,去掉X

    参考:http://fineui.com/bbs/forum.php?mod=viewthread&tid=7455&highlight=alert           http:// ...

  8. [转帖]关于4A(统一安全管理平台)系统的理解

    雪山上的蒲公英 https://www.cnblogs.com/zjfjava/p/10674577.html 关于4A(统一安全管理平台)系统的理解   1. 4A系统的需求分析 近年来企业用户的业 ...

  9. 配置linux命令行界面的 文件显示颜色

    在linux命令行界面下使用ls命令时,有时会看见显示的文件会有不同的颜色,因为linux的文件没有后缀名这个概念(Windows系统中的文件会有后缀名,从而可以将文件标识为不同类型),显示不同的颜色 ...

  10. vue css module

    步骤 module <style> -> <style module> class='header' -> :class='$style.header' <t ...