TypeError:'int'对象不可调用python 2.7

问题描述:

我知道这个问题已被问了很多之前,但我似乎无法在我的代码中找到任何地方,我将我的列表绑定到一个整数值。我改变了所有的变量名称,但无济于事。TypeError:'int'对象不可调用python 2.7

这里是我运行的完整代码:

import sys 
def powerset(a): 
# returns a list of all subsets of the list a 
if (len(a) == 0): 
    return [[]] 
else: 
    allSubsets = [ ] 
    for subset in powerset(a[1:]): 
     allSubsets += [subset] 
     allSubsets += [[a[0]] + subset] 
    return allSubsets 

if __name__ == '__main__': 
    no_test = int(sys.stdin.readline()) 
    for i in xrange(no_test): 
    xor_res = 0 
    len = int(sys.stdin.readline()) 
    numbers_array = map(int,sys.stdin.readline().split()) 
    numbers = [] 
    for i in numbers_array: 
     numbers.append(i) 
    maxset = powerset(numbers) 
    for set in maxset: 
     if len(set) != 0: 
      temp = 0 
      for i in set: 
       temp = temp^i 
     xor_res = xor_res^temp 
    print xor_res 

,这是错误我得到:

Traceback (most recent call last):File "solution.py", line 24, in <module>maxset = powerset(numbers)File "solution.py", line 6, in powerset if (len(a) == 0):TypeError: 'int' object is not callable 

有人能告诉我发生了什么事情错在这里? 谢谢!

您已经创建了一个名为len变量阴影内置的功能len()

len = int(sys.stdin.readline()) 

当您尝试调用整个代码len功能,解释找到len变量第一和试图调用它就像一个功能。由于这是一个int,这不能完成,我们看到了错误。

要解决您的问题,请将您的变量称为不同的东西。一般来说,避免使用“len”,“list”,“map”等名称来创建变量,因为使用这些名称会影响内置变量。

+0

哦,我明白了,这很有道理。非常感谢! – Batman

+0

@Batman如果此答案解决了您的问题,您可以通过单击投票计数器下的复选标记将其标记为已接受。我将不胜感激。 – ApproachingDarknessFish