Python中局部变量的范围

时间:2014-05-25 13:36:47

标签: python scope

我在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”?

1 个答案:

答案 0 :(得分:1)

您可以读取外部作用域中定义的变量,但不能指定global statement就可以写入。在您的示例中,只要您在访问方法的第一行中指定global L,它就应该可以正常工作。