Python,用户输入作为函数参数不起作用:TypeError:';str';对象不可调用
我昨天才开始学习Python,所以这可能是一个愚蠢的问题。尽管如此,我已经寻找了一段时间的解决方案,但没有找到它! 以下是我的基本程序:Python,用户输入作为函数参数不起作用:TypeError:';str';对象不可调用,python,function,typeerror,callable,Python,Function,Typeerror,Callable,我昨天才开始学习Python,所以这可能是一个愚蠢的问题。尽管如此,我已经寻找了一段时间的解决方案,但没有找到它! 以下是我的基本程序: def year(year): try: print(int(year)) except: print("you did not enter a year") if __name__ == "__main__": year = input("what year? ") year(year) 问题是,当我在终端中运行它时,我
def year(year):
try:
print(int(year))
except:
print("you did not enter a year")
if __name__ == "__main__":
year = input("what year? ")
year(year)
问题是,当我在终端中运行它时,我会收到以下消息:
Traceback (most recent call last):
File "fonctions.py", line 24, in <module>
year(year)
TypeError: 'str' object is not callable
回溯(最近一次呼叫最后一次):
文件“fonctions.py”,第24行,在
年(年)
TypeError:“str”对象不可调用
有人能帮我解决这个问题吗?
非常感谢。
Olivier更改输入变量名,因为在这里python解释说它调用的是
year
变量,而不是函数:
if __name__ == "__main__":
year_val = input("what year? ")
year(year_val)
通过将
year
设置为从input
返回的字符串,您正在覆盖自己的函数:这是否回答了您的问题?第二个问题更适合于一个新的独立问题。根据错误消息,问题可能看起来很相似,但它们是两个截然不同的问题。第一个问题是名称空间问题,第二个问题是变量类型问题。@OlivierGirardot我已经回滚了您的编辑。请以后不要将您的问题编辑为完全不同的内容,尤其是在有人回答了问题之后。虽然这会解决问题,但我认为更具python风格的解决方案是将函数重命名为类似于is_year
的内容。它使代码更具可读性,将来更容易调试。是的,这确实解决了我的问题。这绝对是新手犯的错误:)谢谢!但老实说,我在另一个函数上也遇到了同样的问题,它没有涉及函数名和参数名之间的任何混淆。我将把它补充到这个问题上。