[Python Study Notes]匿名函数
Python 使用 lambda 来创建匿名函数。
lambda这个名称来自于LISP,而LISP则是从lambda calculus(一种符号逻辑形式)取这个名称的。
在Python中,lambda作为一个关键字,作为引入表达式的语法。想比较def函数,lambda是单一的表达式,而不是语句块!所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
匿名函数优点
- 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
- 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
- 使用lambda在某些时候然后代码更容易理解
语法
lambda 函数的语法只包含一个语句,如下:lambda [arg1 [,arg2,.....argn]]:expression # lambda 参数列表:return [表达式] 变量
# 由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收
应用实例:
实例1:
# sum加法函数
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print("结果为 : %0.1f" %sum(10, 20))
# -----------输出----------------------
# 结果为 : 30.0
# ------------------------------------
实例2:
# 排序中的应用
infors = [{"name":"宋长武","age":23},{"name":"刘洋","age":22},
{"name":"施名阳","age":24},{"name":"马云伟","age":23}]
# 使用匿名函数,根据age对字典排序
infors.sort(key=lambda x:x['age'])
print(infors) # 或者使用sorted函数
infors_new=sorted(infors,key=lambda x:x['age'])
print(infors_new)
# -----------输出----------------------
# [{'name': '刘洋', 'age': 22}, {'name': '宋长武', 'age': 23}, {'name': '马云伟', 'age': 23}, {'name': '施名阳', 'age': 24}]
# [{'name': '刘洋', 'age': 22}, {'name': '宋长武', 'age': 23}, {'name': '马云伟', 'age': 23}, {'name': '施名阳', 'age': 24}]
# ------------------------------------
实例3:
# 将匿名函数当成变量是用
def test(a,b,func):
result = func(a,b)
return result
# 调用
num = test(11,22,lambda x,y:x+y)
print('结果为:%.1f'%num)
# -----------输出----------------------
# 结果为 : 33.0
# ------------------------------------
[Python Study Notes]匿名函数的更多相关文章
- Python之路Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
Python之路Python作用域.匿名函数.函数式编程.map函数.filter函数.reduce函数 一.作用域 return 可以返回任意值例子 def test1(): print(" ...
- Python入门篇-匿名函数
Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...
- Python学习 之 匿名函数
1.匿名函数(lambda函数):lambda函数是一种快速定义单行的最小函数,是从Lisp借用来的,可以用在任何需要函数的地方. 普通函数定义如下: def f(x,y): return x*yf( ...
- python学习之---匿名函数,返回函数,偏函数
1. 返回函数: 所谓的返回函数,指的是函数作为返回值.高阶函数除了可以接受函数作为参数外,同样可以接受函数作为结果返回.以下是一个可变参数的求和例子,一般求和函数是如此这般定义的: >> ...
- Python的lambda匿名函数
lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):return x**2print f(4) Python中使用lambda的话,写成这样 g = lam ...
- python学习交流 - 匿名函数
匿名函数 匿名函数是一个很有特色的定义函数的功能.在实际使用的过程,用户有时不得不为一些一行代码即可实现的功能来定义一个函数,例如像map, max, filter等内置函数的key参数只能接收可调用 ...
- python学习:匿名函数
Python 函数 lambda 匿名函数 -lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方. def fun(x,y): return x*y fu ...
- python学习日记(匿名函数)
匿名函数 简介 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数. python 使用 lambda 来创建匿名函数. 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数. lam ...
- python基础(10)-匿名函数&内置函数
匿名函数 例子 返回两个数的和 def add(x, y): return x + y # 等价于 add = lambda x, y: x + y 返回字典中值最大的key dic = {'a': ...
随机推荐
- Hive HQL学习
HQL学习 1.hive的数据类型 2.hive_DDL 2.1创建.删除.修改.使用数据库 Default数据库,默认的,优先级相对于其他数据库是最高的 2.2重点:创建表_内部表_ ...
- nginx服务器配置/websocket nginx 配置笔记
server { listen 80; server_name xxx.com; # add_header '*' ; location /u/ { # 反向代理透传客户端ip proxy_set_h ...
- 百度分享到qq空间失败
QQ做了限制的,localhost是不会返回结果的,要用正式域名访问就可以了
- 什么是Linux主机?
Linux主机是基于Linux内核的服务器操作系统配置的主机(常见Linux服务器操作系统如:Redhat,CentOS,Debian,FreeBSD,Ubentu等). Linux主机采用国内功能最 ...
- vue-cli的webpack模版项目配置解析-build/dev-server.js
我们在使用vue-cli搭建vuejs项目(Vuejs实例-01使用vue-cli脚手架搭建Vue.js项目)的时候,会自动生成一系列文件,其中就包含webpack配置文件.我们现在来看下,这些配置到 ...
- iOS enum 定义与使用
枚举其实很重要,特别是在应用开发初期,服务器端数据格式需要更改得情况下,枚举和宏都能是程序简洁,并且改动小. 网上有个人写的言简意赅,适合初学 转自:http://blog.csdn.net/ysy4 ...
- 5分钟把任意网站变成桌面软件--windows版
本文源自于segmentfault的一篇专栏文章:https://segmentfault.com/a/1190000012924855 只不过这篇是MAC版本的,所以我试了下windows版的: ...
- Python3之数据类型
1.基本数据类型数字类型整型 int浮点型 float布尔型 bool: True==1.False==0复数类型 complex算术运算符 + - * / // % **赋值运算符 += -= *= ...
- Java接口和抽象类的理解
接口和抽象类的相同之处就是 都会有抽象方法 抽象方法就是一个没有方法体 等待继承的子类完成的方法 然而接口比较严格 它的方法必须是抽象方法且是公开的 抽象类 可以有自己的属性 和 实体方法 首相用面向 ...
- junit4X系列源码--总体介绍
原文出处:http://www.cnblogs.com/caoyuanzhanlang/p/3530267.html.感谢作者的无私分享. Junit是一个可编写重复测试的简单框架,是基于Xunit架 ...