python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...

这篇博客介绍了Python中的函数式编程概念,包括函数式范式、map函数、lambda表达式、reduce函数、filter函数、高阶函数和列表推导式。通过实例解析了如何利用这些工具处理数据,特别是如何在不改变状态的情况下进行计算,强调了函数的无副作用和引用透明性。此外,还讨论了Python中函数式编程的特点及其与Python之禅的关系。
摘要由CSDN通过智能技术生成
24ca44e4b0d7fad13c25f2841f7ba1fe.png

在这篇10分钟的文章中,您将学习Python中的函数式范型。您还将学习列表推导式。

目录

  1. 函数式范式
  2. Python的map函数是如何运行的
  3. Python中的lambda表达式
  4. Python中的reduce函数
  5. filter函数
  6. Python中的高阶函数
  7. 带有函数的部分应用
  8. 函数编程不是Python化
  9. 列表推导式
  10. 任何可迭代对象的推导式
  11. 结论

函数式范式

在命令式编程范式中,我们通过给计算机一个任务序列来执行任务,然后计算机会执行这些任务。在执行它们时,计算机可以改变状态。例如,我们设A = 5,然后改变A的值。因为我们的A是变量,所以它内部的值是变化的。

在函数式编程范式中,我们不告诉计算机去做什么,而是告诉它是什么东西。一个数的最大公约数是什么,等等。

变量不会变化。一旦我们设置了一个变量,它就会永远保持这种状态。因此,函数在函数式范型中没有副作用。副作用就是函数改变了它外部的东西。让我们来看一个例子:

0f836916e6c3d3f54b35d6bec4d8ccdf.png

输出是5。在函数式范型中,改变变量是一个很大的禁忌,而让函数影响它们范围之外的东西也是一个大大的禁忌。函数唯一能做的就是计算某些东西并返回它。

现在您可能会想“没有变量,就没有副作用?为什么这很好?”问得好,读这篇文章的古怪陌生人。

如果一个函数使用相同的参数被调用两次,那么它肯定会返回相同的结果。如果您学过数学函数,您就会喜欢这一点。我们称之为函数的引用透明性。由于函数没有副作用,如果我们构建一个计算程序,我们就可以加快该程序的速度。如果程序知道func(2)等于3,我们可以将其存储在一个表中。这将防止程序在我们已经知道答案的情况下去运行相同的函数。

通常,在函数式编程中,我们不使用循环,我们使用递归。递归是一个数学概念,它意味着“自食其力”。对于递归函数,该函数将自己作为一个子函数进行调用。下面是Python中递归函数的一个很好的例子:

1f646ed7372d58bcb508866f3e1609da.png

一些编程语言也很。这意味着他们直到最后一秒才开始计算或做任何事情。如果我们编写一些代码来执行2 + 2,一个函数式程序只会在我们需要使用结果时才会计算这个结果。我们很快就会探讨Python中的惰性。

Python的map函数是如何运行的

为了理解映射,让我们首先看看什么是可迭代对象。一个可迭代对象是我们可以迭代的任何东西。这些是列表或数组,但是Python有许多不同的可迭代对象。我们甚至可以通过实现魔术方法来创建我们自己的可迭代对象。一个魔术方法就像一个API,它可以帮助我们的对象变得更Python化。要使一个对象成为一个可迭代对象,我们需要实现2个魔术方法:

abd010ebaafea6f33270e02af5fbe926.png

第一个魔术方法是__iter__,或者叫特殊iter(双下划线)方法,它会返回迭代对象,我们通常在循环开始时使用它。特殊next方法,__next__,会返回下一个对象是什么。

让我们来看看这个:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值