Python的匿名函数
时间:2019-01-17
本文章向大家介绍Python的匿名函数,主要包括Python的匿名函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Python支持所谓的 匿名 或者 lambda 函数。匿名函数是一种通过单个语句生成函数的方式,其结果是返回值。匿名函数使用lambda关键字定义,该关键字仅表达“我们声明一个匿名函数”的意思:
x=2
def function(x):
return x*2
function(x)
4
而该函数可以用更为简洁的匿名函数写出:
function_1 = lambda x:x*2
function_1(x)
4
匿名函数的代码量小(也更为清晰),将它作为参数进行传值,比写一个完整的函数或者将匿名函数赋值给局部变量更好。首先举个例子:
def apply_to_list(some_list,f):
return [f(x) for x in some_list]
ints = [4,0,1,5,6]
apply_to_list(ints,lambda x:x*2)
[8, 0, 2, 10, 12]
你也可以写成 [ x * 2 for x in ints ] ,但是在这里我们能够简单地将一个自定义操作符传递给apply_to_list函数。
另一个例子,假设你想要根据字符串中不同字母的数量对一个字符串集合进行排序:
strings = ['foo','card','bar','aaaa','abab']
这里我们可以将一个匿名函数传给列表的sort方法:
strings.sort(key = lambda x:len(set(list(x))))
strings
['aaaa', 'foo', 'abab', 'bar', 'card']
和def关键字声明的函数不同,匿名函数对象自身并没有一个显式的_name_属性,这也是lambda函数被称匿名函数的一个原因。
对于函数的应用,还有柯里化:它表示通过部分参数应用的方式从已有的函数中衍生出新的函数。例如,假设我们有一个不重要的函数,其功能是将两个数加在一起:
def add_numbers(x,y):
return x+y
使用这个函数,我们可以衍生出一个只有一个变量的新函数,add_five,可以给参数加上5:
add_five = lambda y: add_numbers(5,y)
第二个参数对于函数add_numbers就是柯里化,我们只是定义了一个新函数,这个新函数调用了已经存在的函数。内建的functools模块可以使用pratial函数简化这种处理:
from functools import partial
add_five = partial(add_numbers,5)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php使用pecl方式安装扩展操作示例
- RSA实现JS前端加密与PHP后端解密功能示例
- Laravel源码解析之路由的使用和示例详解
- Linux中crontab输出重定向不生效问题的解决办法
- PHP swoole和redis异步任务实现方法分析
- thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
- 教你一招实现Linux中的文本比对
- PHP基于swoole多进程操作示例
- PHP格式化显示时间date()函数代码
- php函数式编程简单示例
- php进程(线程)通信基础之System V共享内存简单实例分析
- Laravel5.1 框架数据库查询构建器用法实例详解
- php swoole多进程/多线程用法示例【基于php7nts版】
- PHP JWT初识及其简单示例
- PHP保存Base64图片base64_decode的问题整理