Python生成器对象:它们停在哪里?

时间:2017-06-24 05:17:20

标签: python python-3.x generator

我有棘手的问题。这也应该很有趣。

有一种方法可以知道在yield语句中停止生成器对象的位置(源文件和行号),等待恢复执行?还要考虑发电机通过'产生的方式委托给另一台发电机的可能性。言。

1 个答案:

答案 0 :(得分:0)

您始终可以获取生成器对象框架的f_lineno属性。

每个生成器在genobj.gi_frame中保存对其执行帧的引用。您可以从那里查看并找到行号:

genobj.gi_frame.f_lineno

类似地,如果生成器从另一个生成器生成,则它具有包含另一个生成器对象的属性genobj.gi_yieldfrom。如果gi_yieldfrom不是None(意味着它确实来自另一个生成器),请查看它gi_frame并以类似的方式获取它的行号。< / p>