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"?
 
    