Python 中省略号的用法?2024年8月29日 | 阅读 8 分钟 省略号是英语文本中用于表示省略的标点符号。本质上,您会用三个点 (...) 来替换内容。然而,您可能在 Python 源代码中注意到过三个点。省略号不仅仅用于写作。 Python 中的省略号是省略号字面量 (...) 求值的结果。您可以在不导入的情况下使用 Ellipsis 或 ...,因为 Ellipsis 是一个内置常量。 简而言之:在 Python 中使用省略号作为占位符虽然您可以在代码中使用 ... 和 Ellipsis,但 ... 更常用。您可以在 Python 中使用省略号来表示未编写的代码,就像英语中的三个点用于删除文本一样。 执行 ellipsis example.py 中的 do nothing() 不会导致 Python 报错。 调用一个函数体中只有 ... 的 Python 函数时,不会出现任何问题。就像 pass 关键字一样,这意味着您可以使用省略号作为占位符。 三个点产生的视觉干扰最小。因此,在网上分享代码片段时,更改不需要的代码可能很有用。 存根(Stubs)充当实际函数的替代。当您需要函数签名而不想执行函数体中的代码时,存根会很有用。例如,在创建应用程序时阻止外部请求。在使用存根时,您通常会省略代码。 假设您有一个带有自定义 stats.count visitor counter() 的 Flask 项目。跟踪访客统计数据的数据库连接到 count visitor() 方法。在调试模式下测试您的应用程序时,您可以创建 count visitor() 的存根,以避免自己被计数。 在这种情况下,函数体中省略号的使用是推荐的,因为 count visitor() 的内容无关紧要。当您在调试模式下运行 Flask 应用程序时,Python 会顺利运行 count visitor(),而不会出现问题或不良副作用。 如果以调试模式运行,Flask 应用程序第 14 行的 Count visitor() 会指向第 10 行的存根。在 count visitor() 方法体中使用...可以让你在没有负面影响的情况下测试你的应用程序。 如前所述,该示例展示了存根的较小规模用法。存根经常在大型项目的测试过程中使用,因为它们可以更容易地单独测试代码的特定部分。 此外,如果您熟悉 Python 中的类型检查,您可能会熟悉省略号与存根结合的讨论。 Mypy 是最常用于类型检查的程序。Mypy 使用存根文件来识别核心库和第三方库声明的类型。 访问 Python 的 type shed 存储库,以检查 ... 在该存储库的存根文件中是如何使用的。如果您更深入地研究静态类型主题,您可能会发现 Ellipsis 常量的其他应用。在下一节中,您将了解何时在类型提示中使用...。 类型提示中的省略号是什么意思?在上一节中,您了解到可以使用省略号作为占位符来类型检查您的存根文件。然而,您也可以利用类型提示。您将在此领域了解如何使用...来
通过类型提示来清楚您期望的代码中的数据类型是一种明智的方法。但是,在某些情况下,使用类型提示比完全限制用户如何使用对象更可取。例如,您应该提供一个只包含整数的元组,但整数的确切数量由您决定。在这种情况下,省略号可能很有用。 说明:您在第 9 行定义了元组类型变量 numbers。numbers 变量需要是一个只包含整数的元组。总数是多少并不重要。 第 6、7、8 行的变量声明是正确的,因为它们符合类型提示。以下 numbers 的定义是被禁止的:
如果您已安装 mypy,则可以运行代码来列出所有错误。 当您在元组中使用类型提示...时,它表示您期望元组的项是相同的。 另一方面,省略号字面量有效地消除了对可调用对象调用方式的限制,可能是在参数的数量或类型方面。 说明:您在第 12 行声明了可调用参数 action。可以向此可调用对象传递任意数量和类型的参数,但它必须始终返回一个整数。您还可以接受可变数量的可选参数,只要它们是整数,就可以使用 *args: int。在 calculate() 的函数体中的第 19 行,您调用了 action 可调用对象,并传递了一个数字 I 和任何其他参数。 当您构建一个可调用类型时,Python 需要知道您将接受什么类型的输入以及您期望可调用对象返回什么类型。您通过使用 Callable[..., int] 来表示您不关心可调用对象接受多少个或什么类型的参数。但是您说它必须返回一个整数。 compute() 的参数(第 16 和 17 行)是符合您设定的标准的函数。add_one() 和 multiply_with() 这两个可调用对象都返回一个整数。 第 20 行的代码无法执行,因为 nine 是不可调用的。就名称而言,可调用对象必须是您可以调用的东西。 由于 pixels() 是可调用的,因此在第 21 行使用它也是不正确的。您在第 10 行创建了一个 f-string。返回值是字符串而不是您期望的整数类型。 在上面的示例中,您已经探索了如何在类型提示中使用省略号占位符来表示元组和可调用对象。 类型
NumPy 中用于切片的省略号如果您之前使用过 NumPy,您可能已经看到过 Ellipsis 的另一种应用。使用 NumPy 中的省略号字面量,您可以对多个数组进行切片。 让我们从一个不使用 NumPy 中 Ellipsis 的示例开始。 在此 NumPy 示例中,您将组合 arange() 和 reshape() 这两个函数来生成一个三维数组。 如果您只想指定最后一个维度中的第一个元素,可以使用冒号 (:) 来切片 NumPy 数组。 说明:您必须提供三个切片,因为数组有三个维度;如果您添加了更多维度,请想象一下语法会变得多么令人厌烦!未能确定数组的维度会使情况变得更糟。 说明:在这种情况下,Arr 的元素有五个维度。您的结果可能会有所不同,因为维度数量是随机的。但是,使用...来指定您的多维数组将起作用。 NumPy 提供了更多使用 Ellipsis 来指示数组元素或范围的选项。有关这三个小点子的其他应用,请参阅 NumPy:ndarray 的 Ellipsis (...)。 Python 中的省略号总是三个点吗?在了解了 Python 中的省略号之后,您可能会开始更仔细地注意 Python 世界中出现的每一个省略号。三个点可能出现在 Python 中,但它们可能不是 Ellipsis 常量。 Python 交互式 shell 中的三个点表示辅助提示。 例如,当您在 Python 程序中定义函数或编写 for 循环时,提示会跨越多行。 上面提到的示例中的三个点不是字面上的省略号;它们是函数体本身的辅助提示。 队列结束标记省略号有时用于指示一行的结束。这是合乎逻辑的。 它足够独特,可以用作队列结束标记,即使它通常不是你在队列中看到的东西,所以你不需要构建自定义对象。 循环引用在 REPL 中,Python 显示省略号表示循环引用。 这并不意味着 Python 用省略号替换了引用;它只是显示一个,而不是崩溃或溢出屏幕。您可以自己检查一下。如果您继续请求嵌套对象,原始的 a 仍然会被返回。 结论字面量“ellipsis”(...) 求值为 Ellipsis 值。最常见的是,在创建函数存根时,您可能会使用...作为占位符。 在类型提示中使用三个点可能在您希望保持灵活性时很有用。省略号字面量可以替换可调用类型的参数列表,用可变长度的同质类型元组。 使用 NumPy,您可以通过用 Ellipsis 对象替换可变长度的维度来简化切片语法。由于三个点的无干扰语法,您的代码将更易于理解。 下一主题Python 中的竞争性编程技巧 |
在下面的教程中,我们将学习如何在 Python 编程语言中,借助 Tweepy 包构建我们自己的 Twitter Bot,该包提供了使用 Twitter 应用程序编程接口(API)的有效方法。Twitter 被认为是其中最...
阅读 15 分钟
在本教程中,我们将学习 Python 中的向量化。如今的系统需要处理大量数据。与 C/C++ 等其他语言相比,Python 处理大型数据集的速度较慢。因此,我们需要一种向量化技术。让我们了解更多...
阅读 8 分钟
如何将 Python 列表或可迭代对象拆分为块 在本教程中,我们将学习将 Python 列表或其他可迭代对象拆分为块的各种选项。迭代器方法:Python 中的迭代器是用于遍历可迭代对象(如列表)的项目,...
7 分钟阅读
结构化模式匹配,也称为模式匹配或 match 语句,是 Python 3.10 中引入的一项功能,它允许开发人员编写更具表达力和简洁性的代码。此功能受到 Rust、F# 和 Haskell 等其他编程语言中类似构造的启发。本文将...
7 分钟阅读
Paul Viola 和 Michael Jones 提出了,它被高效地用于对象检测。该算法基于机器学习方法,其中使用大量图像(正面或负面)来训练分类器。正面图像:正面图像是一种类型的图像...
阅读 4 分钟
今天使用的大多数个人计算机都具有图形用户界面(GUI)。它为具有不同计算机技能水平的用户提供了简单的体验。由于其点选界面,GUI 应用程序可能需要更多资源,但它们通常更易于使用。其中之一...
阅读 6 分钟
我们已经讨论过边缘计算及其在 ious 教程中的各种功能。让我们扩展一下在边缘计算项目列表想法第一部分中讨论的想法。用于车辆边缘计算的深度强化学习型卸载调度项目描述:一种新的计算范式,称为车辆云…
阅读 12 分钟
? Python 简介 Python 是一种灵活且广泛使用的编程语言,它提供了许多支持其执行的实现。其中,CPython 仍然是最著名且最广泛使用的实现。作为 Python 的默认解释器,CPython 在执行 Python 代码和提供基础方面发挥着关键作用...
阅读 6 分钟
在本教程中,我们将讨论如何在 Matplotlib 中更改图例位置。首先,我们将讨论一些基本概念:Matplotlib 是一个用 Python 编写的强大的可视化库,用于在二维数组中绘制图表。它是在 2002 年由 John Hunter 开发的...
阅读 2 分钟
简介:在本教程中,我们将学习如何使用 Python 生成具有给定入口和出口点的随机无环迷宫。在这里,我们需要获取两个整数值 A 和 B。主要任务是创建一个大小为 A * B 的迷宫,其中只有 0 和 1...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India