Python中的Yield关键字2025年1月4日 | 阅读7分钟 Python 中有许多工具使程序员的生活更加轻松。Python 中的 yield 关键字就是这样一个工具。在典型的 Python 进程中,这个关键字可以用来代替 return 语句。我们将介绍 yield 关键字,它在生成器函数中的使用,return 语句和 yield 语句的区别,以及可以在何种情况下使用 yield 语句代替 return 语句。 Python 中的 yield 关键字是什么?Python 的 yield 关键字类似于我们用来返回一个表达式或对象的另一个关键字,通常在函数中使用,称为 return。但有一个微小的差异。函数中的 yield 语句返回的是一个生成器对象,而不是简单地将一个值返回给调用包含该语句的函数。 当程序调用函数时,Python 解释器在遇到 yield 语句时会暂停函数的执行。生成器类将一个对象返回给调用者。 换句话说,传递给 yield 关键字的任何表达式都将被转换为一个生成器对象,然后该对象将被返回给调用者。因此,为了获取这些值,我们必须反复访问生成器对象。 请注意,生成器函数是使用 yield 关键字定义的函数。局部变量的状态不会因 yield 关键字而丢失。每次调用函数时,最近的 yield 表达式都将作为执行的起点。 如果使用 return 语句调用函数,则每次都会创建新的变量。如果使用生成器函数代替普通函数,则函数的执行将从中断的地方继续。 为了通过一个函数返回多个值,我们可以结合使用生成器函数和 yield 关键字。yield 表达式返回多个值。它们返回一个值,暂停执行,保存指定变量的局部状态,然后恢复。 Python 中 yield 关键字的语法Python 生成器函数概述与只能返回单个表达式的 Python 中的常规函数不同,生成器函数返回一个可迭代对象,我们称之为生成器对象。我们可以通过简单的 Python 循环、next() 或 list() 等方法,或者通过生成器对象内部存储的变量,逐个访问或读取生成器函数中的值。我们使用 def 关键字创建生成器函数。下面的示例是一个很好的例子。 使用生成器函数的 yield 关键字示例 当我们调用这些函数时,会打印出特定的字符串。 代码 输出 <class 'generator'> Yield Keyword in Python 我们在程序中创建了一个简单的生成器函数,在使用了几个 yield 表达式来返回多个值之后,Python 将它们保存在我们创建的一个生成器对象中。然后,可以通过循环遍历该对象,在控制台上显示此生成器函数中的值。 对奇数进行排序,使用 yield 关键字让我们创建一个全新的生成器函数,该函数使用 yield 命令。我们将尝试从一个整数列表中过滤掉奇数。必须使用多种方法(包括 list()、for-in 和 next())输出存储在生成器对象中的信息。 输出 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33] 如何调用带 yield 的函数?使用 yield,我们可以调用函数,而不仅仅是返回一个值。例如,假设我们创建一个名为 square() 的函数,该函数在被调用时返回给定数字的平方。此代码使用了 return 关键字。另一个名为 square() 的函数使用 yield 关键字来提供一系列整数的平方。在这种情况下,我们可以将 yield 表达式与 square() 函数结合起来创建一个简单的程序。请看下面的示例代码。 代码 输出 [0, 1, 4, 9, 16, 25, 36, 49] return 关键字与 yield 关键字的区别Python 函数中的 yield 关键字与用于返回值的 return 关键字类似,不同之处在于使用 yield 关键字的生成器函数返回的是一个生成器对象,而不是单个值。它们的主要区别在于 Python 中的 return 关键字会终止函数的执行。然而,yield 关键字会暂停函数的执行。另一个区别是 return 关键字之后的语句永远不会被执行。当函数继续运行时,yield 语句会被执行。 何时使用 yield 而不是 return 关键字?yield 关键字会暂停函数的执行,返回一个值,并保留足够的状态,以便生成器函数能够从 yield 离开的地方继续执行。当执行恢复时,函数将从上一个 yield 执行中断的地方继续执行。这使得程序能够随着时间的推移输出一系列值,而不是同时计算值并将它们作为列表数据类型返回。 使用 yield 的优点
使用 yield 的缺点
输出 Function with return keyword: 3.0 Function with yield keyword: [0.0, 1.0, 1.4142135623730951] 虽然 yield 关键字可以产生多个结果,但 return 只给调用者一个特定的值。如果我们想遍历一个序列但又不想将整个序列保存在内存中,则必须使用 yield。 Python 生成器函数使用 yield return 输出。当使用 def 关键字的生成器函数需要生成值时,使用 yield 关键字代替 return 关键字。当 yield 被包含在定义的正文中时,该函数就变成了一个生成器函数。 return 和 yield 关键字的区别列表下面列出了 Python 中的 yield 和 return 之间的区别。
下一个主题如何在 Python 中退出程序 |
让我们分解一下用于图像分类的卷积神经网络 (CNN) 的组件,但不提供具体代码。用于图像分类的典型 CNN 由以下元素组成:输入层:输入层接收输入图像的原始像素值。此大小...
阅读20分钟
引言 数据处理和计算机编码与数据科学及其他分析方法密不可分。随着 Python 库数量的不断增长,这门语言为数据处理等任务提供了强大的武器库,而这些任务传统上是 Pandas 的基准。Panda 是一个非常多功能的...
7 分钟阅读
Python 是一种高级解释型编程语言,以其简洁明了而闻名。它由 Guido van Rossum 创建,主要于 1991 年发布,Python 强调代码可读性和语法,允许程序员用比 C++ 等语言更少的代码行来表达概念...
阅读 4 分钟
Python 是一种通用且强大的编程语言,提供了丰富的内置模块和函数来简化开发过程。其中一个模块是 os 模块,它提供了一种与操作系统交互的方式。在 os 模块中,makedirs() 方法 stands...
阅读 3 分钟
?Python 是一种多功能且功能强大的编程语言,广泛用于各种应用程序,包括数据操作和分析。处理数据通常涉及存储和检索信息,而字典是此类任务的便捷数据结构。在本文中,我们将探讨...
阅读 4 分钟
Vaex 是一个高性能的 Python 模块,用于处理大型数据集。它使客户能够有效地处理、查看和分析不适合内存的数据,而无需将其分散到集群中。Vaex 的核心外 DataFrame 功能使其特别适合...
阅读 8 分钟
Pytube 就像 Python 爱好者下载 YouTube 视频的超级英雄,让他们毫不费力。想象它是一个用户友好的助手,简化了从 YouTube 获取视频的整个过程。Pytube 酷炫之处在于它能够处理不同的视频质量...
11 分钟阅读
在下面的教程中,我们将学习如何实现。但在此之前,让我们讨论一下 Quickselect 算法是什么。什么是 Quickselect 算法?一种称为 Quickselect 的选择过程用于识别第 k 个顺序统计量,即数据元素中的最小数据元素...
阅读 3 分钟
引言:在本教程中,我们将学习如何在 Python 中分割字符串中的多个字符。在 Python 中,字符串是一种简单的数据类型,用于存储和操作文本文件。将字符串分割成多个字符是 Python 中的一项文本处理功能。从时间...
7 分钟阅读
Windows 注册表 Windows 库包含几个主键,每个主键都包含子键和值。主键有:HKEY_CLASSES_ROOT (HKCR):有关已注册应用程序、文件关联和 COM 对象的信息。HKEY_CURRENT_USER (HKCU):当前登录用户的配置信息。HKEY_LOCAL_MACHINE (HLM):本地配置信息...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India