TypeError:'str'对象不可调用

时间:2015-06-30 18:17:36

标签: python

我正在尝试运行下面的简单代码:

from sys import argv
script, filename = argv
print ("erase %r") % filename
raw_input = ("?")
target = open(filename, 'w')
print ("truncate")
target.truncate()
print ("fline")
repeat3 = raw_input ('> ')
print ("write")
target.write(repeat3)

我一直收到错误:

Traceback (most recent call last):
  File "ex9.py", line 9, in <module>
    repeat3 = raw_input ('> ')
TypeError: 'str' object is not callable

3 个答案:

答案 0 :(得分:5)

当你这样做时:

raw_input = ("?")

您已将名称raw_input分配给字符串"?",因此您无法再调用该函数(而是调用字符串,这不起作用)。

为您的变量使用不同的名称(虽然看起来您甚至没有使用它,因此您只需删除有问题的行)。

答案 1 :(得分:1)

您使用raw_input屏蔽了raw_input = ("?")功能。您正在使用user_input = raw_input("?")正确查找repeat3

答案 2 :(得分:1)

>>> type(raw_input)
<type 'builtin_function_or_method'>
>>> raw_input = '?'
>>> type(raw_input)
<type 'str'>

您在代码中所做的是覆盖raw_input实际意味着什么。而不是将其保持为获取用户输入的函数,而是将raw_input转换为包含'?'(字符串)的常规变量

并且字符串不可调用。

例如,如果您运行:

"?"('>')

你会得到同样的错误,因为它确实是你想要做的。