CycleErrors in graphlib



我目前正在学习python 3.9的graphlib。我想生成一个CycleError,但是当我运行以下代码时:

#!/usr/bin/python3
from graphlib import TopologicalSorter
ts = TopologicalSorter()
ts.add(2, 1)
ts.add(3, 2)
ts.add(4, 3)
ts.add(1, 4)
ts.static_order()

我没有得到CycleError。但是如果我像这样修改代码:

#!/usr/bin/python3
from graphlib import TopologicalSorter
ts = TopologicalSorter()
ts.add(2, 1)
ts.add(3, 2)
ts.add(4, 3)
ts.add(1, 4)
tuple(ts.static_order()) # why does this work with tuple or list ?

为什么?

TopologicalSorter.static_order()是生成器;函数体中包含yield语句,则函数调用的返回值为iterator。

函数体不会执行之前的第一次尝试提取元素的迭代器。

相关内容

  • 没有找到相关文章

最新更新