我在合并和拆分部分偶然发现了这段代码.

from itertools import *


def make_iterables_to_chain():
    yield [1, 2, 3]
    yield ['a', 'b', 'c']


for i in chain.from_iterable(make_iterables_to_chain()):
    print(i, end=' ')
print()

我不明白make_iterables_to_chain()是如何工作的.它包含两个yield 率声明,它是如何工作的?

救命啊!

推荐答案

同样的道理,一个单一的yield工作.

在一个生成器中可以有任意多个yield,当调用__next__时,它将执行,直到遇到下一个yields .然后返回生成的表达式,生成器暂停,直到再次调用它的__next__方法.

在发电机上运行几个next次调用以查看以下内容:

>>> g = make_iterables_to_chain()  # get generator
>>> next(g) # start generator, go to first yield, get result
[1, 2, 3]
>>> next(g) # resume generator, go to second yield, get result
['a', 'b', 'c']
>>> # next(g) raises Exception since no more yields are found 

Python-3.x相关问答推荐

类型的可变性对变量的作用域有影响吗?

Paramiko SFTPClient get()和put()函数的通过/失败结果?

将字符串转换为python日期时间时出错

我想判断df_entry_log[AM_PM],并根据测试填充列

PyQt5 中耦合滑块和拨号小部件.解决结果不一致的问题

在新数据帧上自动提取两个字符串 python 之间的相等性

如何确保 GCP Document AI 模型输出与输入文件同名的 JSON?

删除给定数组中所有元素为True的所有子数组

如何从形状汇总图中提取实际值

过滤阈值大小数据以使用 Pyspark 或 Python 读取

有没有办法使用 python opencv 计算与图像的白色距离

用于 BIG 数组计算的多处理池映射比预期的要慢

Pandas 值列中列表中元素的计数

正则表达式从文本文件中捕获包含制表符/空格和子字符串的部分字符串

多个返回函数的列表理解?

如何从左到右解包元组?

multiprocessing.Queue 中的 ctx 参数

用于 Django 应用程序的 Cython:它会工作吗?

如何在 FastAPI 中的一条路由上捕获任意路径?

Python 2 与 Python 3 - urllib 格式