python函数式编程读取数据时出现错误_初学者学习Python的30天—第11天—函数式编程基础...

前文

面向对象编程和编程的功能范式都基于相同的原理进行操作-关注点分离。面向对象编程通过将属性及其动作组合到来完成此操作class,而函数编程则使属性及其动作保持分离,并使用函数对对象执行动作。

今天,我探讨了应用于Python的函数式编程概念,并探讨了如何实现函数式编程技术来组织Python代码。

在开发人员领域中,通常会争论哪种编程范例更好。尽管许多人对编写纯面向对象的代码或纯函数的代码有强烈的意见。更加务实的方法是了解这两种范式的优点以及它们的警告,并在必要时采用两全其美的方法。

以下是函数式编程的一些重要概念及其在Python中的实现。

纯函数

纯函数是函数式编程的心脏和灵魂,就像类和对象是面向对象的编程一样。

纯函数是遵循以下两个规则的函数:如果提供相同的输入,它将始终返回相同的输出。

它不会导致任何副作用。

副作用通常是指在功能范围之外更改数据,例如打印到控制台,执行网络请求,更改数据库,访问全局变量等。

d49accb2c3360d1b6d3692897d59bb10.png

10f1892b076f2acca97308a906dca967.png

纯函数有什么好处?

理想情况下,纯功能应仅执行单个特定操作。由于纯函数总是返回相同的输出,提供相同的输入,因此它们是可预测的,因此非常易于测试。这种可预测性功能始终允许并行运行几个纯函数,因为它们没有副作用。它使代码更易于阅读和理解。

一些重要的内置功能

Python带有一些内置函数集,这些函数集允许以功能样式或更具声明性的方式编写代码。这些函数是纯函数,不会修改输入数据,也不会产生任何副作用。

map函数

map函数将函数作为执行某些操作的第一个参数,将迭代器作为第二个参数。它基本上循环遍历可迭代的每个项目,并应用传递的函数。0aa5cec35533990bf340d7c2cda2143e.png

map函数返回对map对象存储位置的引用。为了获得结果数据,需要将其作为参数传递给list函数。关于该map功能要注意的重要一点是该功能的输入和输出具有相同的长度。map不会修改输入的迭代。

filter

filter,顾名思义,它根据传递的函数过滤输入的可迭代数据f6fe8efba4ad593aa3ca804af0502320.png

就像map,filter函数将对引用的引用返回到存储过滤器对象的内存中的地址,并且要获取实际结果,需要将其传递给列表函数。根据条件,输出的长度可以等于或小于输入的长度。filter也不会更改或变异输入数据

zip

在zip内置函数接受多个iterables和团体或拉链他们作为元组。当不同的用户数据存储在数据库的不同列中并且需要根据其关系将它们组合在一起时,这种功能非常有用。

2ad660d26c864ec8880e89774a2a8187.png

reduce

reduce与上述其他功能略有不同。reduce不是内置python函数的一部分。它是软件包或工具带的一部分,与python解释器和软件包一起下载。因此需要从functools模块中导入。稍后将探讨有关模块的更多信息。

reduce理解起来有些棘手。但是,从JavaScript Universe借用的array方法reduce也具有相同的作用。它跟踪累加器中的结果值。

reduce 接受一个函数和一个可迭代的必需参数,以及一个可选的初始化器,默认情况下将其设置为0。

reduce 可以被认为是将可迭代值减少或合并为单个值的一种方法。

今天就到这里!

我是不吐不快的编程君

关注我,带你走进编程的世界

有任何不懂问题可以私信我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值