python TypeError:'list'对象不可调用错误

时间:2012-04-08 20:02:09

标签: python

我是python的新手,我试图在这里理解一个基本错误。我得到一个TypeError:'list'对象在下面的代码中不是可调用的错误。有人可以解释一下我的代码中有什么问题吗?

graph = {'a': ['b', 'c'], 'b': ['a', 'c'], 'c': ['b', 'd'], 'd': ['a'], 'e': ['a']}


def reachable(graph, node):
    res = [node]
    reachable = graph[node]
    for currentnode in reachable:
        if currentnode not in res :
            reachableNodes = reachable(graph,currentnode) << TypeError: 
            for newNode in reachableNodes:
                if newNode not in res :
                    res.append(newNode)
    return res 

错误:TypeError:'list'对象不可调用错误

2 个答案:

答案 0 :(得分:7)

您通过执行reachable = graph[node]隐藏了功能名称。使用其他名称。

答案 1 :(得分:1)

reachable是您递归调用的模块名称。

在第3行,当你说reachable = graph[node]时,它会覆盖变量reachable,该变量被绑定到一个函数,现在链接到一个列表(或者什么都有)。

当你在第6行尝试以递归方式调用该函数时,它最终会尝试调​​用reachable所在的列表并且失败。

要解决此更改变量的名称,您打算将列表保存为与reachable

不同的列表
canreach = graph[node]
for currentnode in canreach:

同时仔细检查您的可访问功能。有可能无限递归。每次递归调用reachable时,您都在创建res的新实例。所以if currentnode not in res永远不会错。尝试将res作为参数传递,或将其用作全局。