Python yield关键字

时间:2020-02-23 14:43:42  来源:igfitidea点击:

今天,我们将学习python yield关键字。
Python yield的用途几乎与return关键字相同,除了它逐一返回值。
当您需要返回大量值时,此关键字非常有用。

Python yield

python yield关键字只有一种用法,即用yield语句替换函数的return语句。

当我们这样做时,该函数称为生成器。
我们已经有一个有关生成器的教程。
您可以看看python生成器。

Python yield示例

正如我之前所说,收益率是收益的替代。
因此,yield语句写在函数体中。
让我们看看如何使用yield:

# defining the function that will have some yield statement
def yieldStatement():
 yield 'Statement 1'
 yield 'Statement 2'
 yield 'Statement 3'

# getting the statements
statements = yieldStatement()
# for each statements that are yielded will be printed
for s in statements:
 print(s)

这将输出:

Statement 1
Statement 2
Statement 3

如果您注意的话,您会发现我们正在使用for循环查看所有值。
这意味着该函数返回可迭代的内容。
这就是为什么我们可以迭代并打印值的原因。

当我们使用yield时,第一个yield值可以被迭代一次,以此类推,所有值可以被迭代一次。
一旦我们迭代了所有的yield值,就无法返回。
您可以通过使用for循环再次打印语句值来检查它。
它不会输出任何内容。
这意味着它在我们迭代时正在执行。
迭代之后,不存在任何内容。
这样可以节省存储空间。

使用yield的简单示例

我们还可以使用不同的循环编写尽可能多的yield语句。
假设我们要编写一个将提供一些值的函数。
然后该函数将每个值乘以5,然后返回所有结果。
为此,我们来看以下示例:

# the function that will multiply each element by 5
def multiplyByFive(*kwargs):
 for i in kwargs:
     yield i * 5

a = multiplyByFive(4, 5, 6, 8)

# showing the values
for i in a:
 print(i)

现在,将作为参数给出的每个元素乘以5。

Python输出产生器

在上面的示例中定义的函数称为yield生成器。
您可以通过打印命令检查如下:

# the function that will multiply each element by 5
def multiplyByFive(*kwargs):
 for i in kwargs:
     yield i * 5

a = multiplyByFive(4, 5, 6, 8)
print(a)

这将输出:

<generator object multiplyByFive at 0x02CF7090 >