lambda

  匿名函数,核心是作为算子,处理逻辑只有一行但具有函数的特性,核心用于函数式编程中

三元运算符

  其实本质上是if分支的简化版,满足条件返回 if 前面的值,不满足条件返回 else后面的值

# 100 < 100 返回 False, 则 返回 else后面的值
value = 100 if 100 < 100 else 10
print(value)

  

map

  映射函数(依次把可迭代对象(可多个)中的值依次传递到函数中,然后返回生成器(长度以最短的为基础))

numbers = [1, 2, 3, 4]
names = ['bei_men_chui_xue', 'qi_niu_yun'] numbers = map(lambda value: value + 1, numbers)
students = map(lambda value: value.upper(), names) print(list(numbers))
print(list(students))

  

reduce

  减少函数(连续计算,处理函数中第一个值是上一次函数执行的返回结果,第二个值是依次从迭代对象中的值,传递完则返回最后函数执行的结果)

from random import randint
from functools import reduce numbers = [randint(-10, 10) for _ in range(10)]
print(numbers)
print(sum(numbers))
numbers_sum = reduce(lambda one, two: one + two, numbers)
print(numbers_sum)

  

filter

  依次依顺序把可迭代对象传入一个函数,获取函数返回为True的值,变成生成器

from random import randint

numbers = [randint(-10, 10) for _ in range(10)]
print(numbers) # 取大于等于0 的整数
result = filter(lambda value: value >= 0, numbers)
print(list(result))

 

闭包

  函数 + 环境变量(放在上层函数, 上层函数没有任何参数,则不能形成闭包) (不再受外层函数之外的任何参数影响)

  闭包架构 函数内再定义一个函数,外层函数返回内层函数名,内层函数需要引用外层函数变量

  闭包意义:函数调用的现场(上层函数的变量)保存了起来, 通过 nonlocal 声明不是当前函数局部变量,进行现场变量的修改

  闭包是装饰器实现的原理,所有的闭包问题都可以通过面向对象类的方式解决,选择简单实现的额方法

def is_jpg(name):
"""判断文件的后缀名是是不是jpg,如果不是则添加上jpg"""
def wrapper(filename):
if filename.endswith(name):
return filename
else:
return filename + name
return wrapper if __name__ == '__main__':
f = is_jpg('.jpg')
print(f('beimenchuixue.txt'))
print(f('beimenchuixue.jpg'))

  

经验:

  1. 三元运算符其实本质上是if分支的简写逻辑

  2. 经常使用的是命令是编程,命令式编程包含流程控制、函数、分支、循环,函数式编程包括map reduce filter lambda,理论上可以替换所有命令式编程

  3. 命令式编程可以使用函数式编程简化代码逻辑

  4. 函数闭包,本质上保留了上层函数的变量

  

Python-函数式编程-map reduce filter lambda 三元表达式 闭包的更多相关文章

  1. Python函数式编程-map/reduce

    1.map map()传入的第一个参数是f,即函数对象本身. map()函数接收两个参数,一个是函数,一个是Interable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterat ...

  2. Python函数式编程——map()、reduce()

    文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理 ...

  3. (转)Python函数式编程——map()、reduce()

    转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...

  4. map/reduce/filter/lambda

    Python内建了map()/reduce()/filter()函数. map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的It ...

  5. Python的函数式编程: map, reduce, sorted, filter, lambda

    Python的函数式编程 摘录: Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式编程语言. 函数是Python内建支持的一种封装,我们通过把大段代码 ...

  6. python 中的map(), reduce(), filter

    据说是函数式编程的一个函数(然后也有人tucao py不太适合干这个),在我看来算是pythonic的一种写法. 简化了我们的操作,比方我们想将list中的数字都加1,最基本的可能是编写一个函数: I ...

  7. 1.python函数式编程-map函数

    编程方法论 面向过程 函数式 面向对象 面向过程 将编程过程拆分成多个步骤,在函数中按照每个步骤进行编程: 函数式编程 编程语言定义的函数+数学意义的函数 1.不可变,不用变量保存状态,不修改变量: ...

  8. 函数式编程Map()&Reduce()

    .forEach():每个元素都调用指定函数,可传三个参数:数组元素丶元素索引丶数组本身丶 , , , , , , , ]; a.forEach(function(v,i,a){a[i]=v+;}); ...

  9. python基础之map/reduce/filter/sorted

    ---map(fun,iterable) 首先来看一看map()函数,map函数接受两个参数,第一个参数是函数的名称,第二个参数一个可迭代对象.即map(fun,iterable) map函数就是将具 ...

随机推荐

  1. C语言基础练习——打印乘法口诀表

    C语言基础练习--打印乘法口诀表 JERRY_Z. ~ 2020 / 8 / 26 转载请注明出处! 代码: /* * @Author: JERRY_Z. * @Date: 2020-08-26 16 ...

  2. 【转】Echarts自适应

    var myChart1 = echarts.init(document.getElementById('chart1')); var option = myChart1.getOption(); w ...

  3. static,private,final,abstract,protected

    1,static:静态变量:位于方法区中,只有一份,这个类的所有实例共享,不可以被继承 静态方法:直接通过类就能调用,静态方法中只能使用静态变量,不可以被继承 2,private:类不能用privat ...

  4. Javascript循环和代码规范

    1 - 循环 1.1 for循环 语法结构 for(初始化变量; 条件表达式; 操作表达式 ){ //循环体 } 名称 作用 初始化变量 通常被用于初始化一个计数器,该表达式可以使用 var 关键字声 ...

  5. 网络测速神器:SpeedTest深度指南

    最近在测试一个项目,里面涉及到一个测试case:在linux服务器上,当网络带宽较差时,观察服务的消息处理能力和表现.限制网卡带宽有许多方法,比如Wondershaper或者ethtool.那验证限速 ...

  6. Photogrammetry and Game

    https://skulltheatre.wordpress.com/2013/02/11/photogrammetry-in-video-games-frequently-asked-questio ...

  7. python小白入门基础(二:变量)

    #变量:可以改变的量就是变量,实际上是由内存开辟的一块空间,临时存在内存中,以便后续代码使用.#作用:代指内存中某个地址中的内容. #1.变量的概念name = "王五"name ...

  8. 【原创】经验分享:一个Content-Length引发的血案(almost....)

    前言 上周在工作中遇到一个问题,挺有意思,这里记录一下.上周在工作中遇到一个问题,挺有意思,这里记录一下.标题起的很唬人,这个问题差点引发血案,花哥还是很严谨的一个人,后面备注了almost.... ...

  9. 亚马逊DRKG使用体验

    基于文章:探索「老药新用」最短路径:亚马逊AI Lab开源大规模药物重定位知识图谱DRKG,记录了该项目的实际部署与探索过程,供参考. 1. DRKG介绍 大规模药物重定位知识图谱 Drug Repu ...

  10. 一文说清 InnoDB 的事务机制

    我们从一个转账的故事开始. 隔壁小王从美团上找到了一家水饺店,准备中午吃水饺.下单成功,支付20元. 商家这里响了一下:叮叮,您有美团外卖新订单啦,请及时处理.水饺一份,好嘞,下锅. 很快小王吃到外卖 ...