为什么在将变量附加到列表时出现“'str' object is not callable”?

Why do I get " 'str' object is not callable" when appending variables to a list?

我创建了一个函数,它创建一个空列表,并将另一个列表中的值赋给一个变量。然后代码应该在每次调用函数时将变量的值附加到列表中。该函数放置在一个 while 循环中,因此它应该继续追加。但是在添加第一个元素后,我收到一条错误消息,告诉我该字符串对象不可调用。代码如下。我需要这个来进行模拟考试。有什么想法吗?:

def tracker():
    global tracker
    global trackerresult
    trackerresult = []
    tracker = opposite1[decider]
    trackerresult.append(tracker)
    print(trackerresult)

结果:

Traceback (most recent call last):
  File "C:\Users\Timic\Downloads\Python Opposites Prorgam (1).py", line 47, in <module>
tracker()
TypeError: 'str' object is not callable   

您在 tracker 全局变量和 tracker 函数之间存在名称冲突。当你 运行 def tracker(): ... 时,它将变量 tracker 设置为一个函数对象。当您随后第一次调用 tracker 函数时,它会修改全局变量 tracker 以明确指向 opposite1[decider] 的结果,这是一个字符串。下一次调用 tracker 函数的尝试失败,因为该函数已被字符串覆盖。