Python Glossary English

Python 3.9+graphlibисключение

graphlib.CycleError

топологическая сортировка

Исключение TopologicalSorter, когда в графе есть цикл; во втором аргументе — сам цикл списком узлов.

Синтаксис

except graphlib.CycleError as e: cycle = e.args[1]

Это подкласс ValueError, поэтому except ValueError его тоже поймает. Цикл лежит в e.args[1], а не в отдельном атрибуте, и первый узел повторяется в конце: ['a', 'b', 'a']. Найден будет один цикл, а не все; узел, зависящий сам от себя, тоже цикл.

Примеры

from graphlib import TopologicalSorter, CycleError
try:
    list(TopologicalSorter({'a': {'b'}, 'b': {'a'}}).static_order())
except CycleError as e:
    print(e.args[1])  # → ['a', 'b', 'a']
print(issubclass(CycleError, ValueError))  # → True

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности