Python 中的柯里化2024 年 8 月 29 日 | 5 分钟阅读 在本教程中,我们将学习 Python 中的柯里化,这是一个 Python 中的新概念。大多数开发者对此主题并不熟悉。我们将解释柯里化的概念、其用例以及如何在 Python 中实现它。让我们来了解一下 Python 中的柯里化。 什么是柯里化?在数学和计算机科学中,柯里化是将接受多个参数的函数分解为接受单个参数的函数的函数。在这里,让我们把它讲清楚。术语“curry”来自数学家 Haskell Curry 的名字,而不是一种辛辣的菜肴。 柯里化是将一个具有多个参数的函数转换为一系列单参数函数的转换。我们可以说,将函数 f(a, b, c, …..) 转换为类似 f(a)(b)(c)…… 的函数。 柯里化也用于理论计算机科学,因为它通常更容易将多参数模型转换为单参数模型。 函数组合我们定义两个函数 f 和 g 的组合 h。 所以它将定义为我们在 Python 中定义装饰器的方式;内部函数的输出成为外部函数的输入。 我们将在接下来的示例中使用此函数。现在让我们理解另一个示例。 假设我们有一个温度计,它工作不准确。可以使用 temp_correction 函数计算正确温度。我们将温度值从摄氏度转换为华氏度。我们可以通过将组合应用于这两个函数来做到这一点。 示例 - 输出 44.5 50.0 两个函数的组合通常不是可交换的,即 compose (celsius2fahrenheit, readjust) 不同于 compose(readjust, celsius2fahrenheit) 输出 47.3 50.0 Convert2 并不是我们问题的解决方案,因为它并没有重新调整我们温度计的实际温度,而是重新调整了转换后的华氏度值。 柯里化的数学表示f(x, y) = (x*x*x) + (y*y*y) h(x) = (x*x*x) h(y) = (y*y*y) h(x)(y) = h(x)+h(y) f(x, y) = h(x)(y) Curry f = h(x)(y) 它将如下所示地链式组合函数。 示例 - 1:a(x) = b(c(d(x))) 示例 - 2:v(a, b, c, d, e) = w(x(y(z(a, b, c, d, e)))) 输出 20 30 50 60 当函数链很长时,会很复杂。从而将一个大的操作块简化为类似的序列块。让我们理解下面的示例。 示例 - 输出 524934.3832020997 在下一个示例中,我们将转换时间并定义函数链。 示例 - 2 输出 1728000 具有任意数量参数的柯里化函数这里就出现了问题,如何对具有任意且未知数量参数的函数进行柯里化? 我们可以使用嵌套函数来“柯里化”参数。我们需要一种方法来告诉函数计算并返回值。被调用的带有参数的函数将被柯里化。如果我们不带参数调用函数,它将告知 Python 函数我们最终想要结果。 让我们理解下面的例子。 示例 - 输出 5.571428571428571 4.333333333333333 4.333333333333333 让我们打印一些重要的参数,这将有助于我们更好地理解。 示例 - 输出 Calling curried function with: args: (2,) kwargs: {} Currying the values: f_args: [2] f_kwargs: {} Calling curried function with: args: (5,) kwargs: {} Currying the values: f_args: [2, 5] f_kwargs: {} Calling curried function with: args: (9,) kwargs: {} Currying the values: f_args: [2, 5, 9] f_kwargs: {} Calling curried function with: args: (4, 5) kwargs: {} Currying the values: f_args: [2, 5, 9, 4, 5] f_kwargs: {} Calling curried function with: args: (5, 9) kwargs: {} Currying the values: f_args: [2, 5, 9, 4, 5, 5, 9] f_kwargs: {} Calling mean_val with: [2, 5, 9, 4, 5, 5, 9] {} 5.571428571428571 结论柯里化在许多情况下都有帮助,但重要的是要注意其局限性。 下一个主题如何使用地理定位 API 查找用户位置 |
简介 Python 是一种健壮而灵活的编程语言,开发可维护且成功的代码需要清晰有效的函数。本文将探讨许多增强 Python 函数的技术,而无需使用繁琐或重复的代码。通过遵循这些清晰的编码实践,您可以制作出...
阅读 4 分钟
在以下教程中,我们将通过一些示例了解Python编程语言中的webbrowser模块。那么,让我们开始吧。了解Python webbrowser模块 webbrowser模块是Python编程语言中一个方便的网络浏览器控制器。该模块提供了一个高级接口,它...
阅读 3 分钟
学习矢量量化(或 LVQ)是一种人工神经网络,它也受到代表神经网络的生物模型的启发。它基于用于监督学习和分类的原型算法。它通过竞争算法开发了其网络...
5 分钟阅读
这篇文章将演示如何使用 PyQt5 开发一个火焰计算器。基于两个给定名字的算法,这个火焰计算器评估关系并预测它们可能的结果。最受欢迎和最有效的编程语言是 Python。Python 拥有一个强大的开发者社区...
阅读 10 分钟
这里的缩进是指在开始任何语句或代码块时使用的空格和制表符的数量。这些空白和制表符的使用必须与特定代码块结束时匹配;因此,它指的是特定块的正确缩进。这个...
阅读 15 分钟
许多网站会提供关于任何技术的最新新闻,而文章可以通过其收到的评论数量来评估。如果新闻是关于加密货币的,并且文章取自 cointelegraph.com,我们可以轻松地计算并存储每条新闻...
阅读 6 分钟
无论是哪种编程语言,参数(Arguments)和形参(Parameters)这两个词都会给程序员带来很多困惑。有时,这两个词会互换使用,但实际上,它们有两个不同但相似的含义。本教程解释了这两个词之间的区别以及...
阅读 6 分钟
如何将 Python 列表或可迭代对象拆分为块 在本教程中,我们将学习将 Python 列表或其他可迭代对象拆分为块的各种选项。迭代器方法:Python 中的迭代器是用于遍历可迭代对象(如列表)的项目,...
7 分钟阅读
在本教程练习中,我们将了解如何使用 PycURL,它是 Python 中 cURL 库的连接点。Curl 用于在服务器之间传输数据和发出各种数据请求。PycURL 非常适合测试 REST API、下载文件……
5 分钟阅读
Tkinter 是 Python 编程语言的标准图形用户界面 (GUI) 库。当与 Tkinter 库结合使用时,Python 提供了一种快速可靠的方法来构建基于 GUI 的应用程序。在本教程中,我们将借助 ... 构建一个 GUI 成绩单。
56 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India