I changed the DFS pseudocode for Topological Sort on Wiki for python and got the following:
def topological_sort(nodes):
"""Topological sort for DAGs. Written based on pseudocode on Wiki.
DFS-based sort by Tarjan 1976"""
L=[]
def visit(node):
if node.dfs_tmark:
print ("Error: Graph is not a DAG")
if not node.dfs_pmark:
node.dfs_tmark=True
for m in node.parents:
visit(m)
node.dfs_pmark=True
L=[node]+L
for node in nodes:
if not (node.dfs_pmark and node.dfs_tmark):
visit(node)
However I am getting the error: UnboundLocalError: local variable 'L' referenced before assignment
. As far as I remember python looks for variables backwards in scopes and I wonder why it cannot reach "L"?