生成器表达式中的方法:gi_running、gi_yieldfrom等

2024-03-28 12:11:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了以下生成器函数:

>>> def file_readlines(filepath):
...     f = open(filepath, 'r')
...     for line in f:
...         yield line
... 
>>> gen=file_readlines(filepath)
>>> next(gen)

当我检查生成器的方法时,它显示以下内容:

...'close', 'gi_code', 'gi_frame', 'gi_running', 'gi_yieldfrom', 'send', 'throw'`

throwsendclose记录在Python Expressions中,我想象codeframe类似于stacktrace对象,但是gi_runninggi_yieldfrom是什么?这些是如何使用的


Tags: 函数sendclosedeflinecodeframerunning
1条回答
网友
1楼 · 发布于 2024-03-28 12:11:52

gi_running告诉您解释器当前是否正在执行来自生成器框架的指令(gi_frame

gi_yieldfrom是生成器产生的迭代器。它是在3.5中引入的,您可以在这里阅读增强标签:https://bugs.python.org/issue24450

def yielder(gen):
    yield from gen

x = range(5)  
g = yielder(x)

print(g.gi_yieldfrom) # None
next(g) # delegate to the other iterator
print(g.gi_yieldfrom) # <range_iterator object at 0x0000026A0D72C830>
list(g) # exhaust iterator
print(g.gi_yieldfrom) # None

相关问题 更多 >