我在Wiki上更改了DFS pseudocode for Topological Sort for python并获得了以下内容:
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)
但是我收到错误:UnboundLocalError: local variable 'L' referenced before assignment
。据我所知,python在范围内向后寻找变量,我想知道为什么它不能达到“L”?
答案 0 :(得分:1)
您可以读取外部作用域中定义的变量,但不能指定global statement就可以写入。在您的示例中,只要您在访问方法的第一行中指定global L
,它就应该可以正常工作。