Python,用户输入作为函数参数不起作用:TypeError:';str';对象不可调用

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) 问题是,当我在终端中运行它时,我

我昨天才开始学习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)
问题是,当我在终端中运行它时,我会收到以下消息:

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
的内容。它使代码更具可读性,将来更容易调试。是的,这确实解决了我的问题。这绝对是新手犯的错误:)谢谢!但老实说,我在另一个函数上也遇到了同样的问题,它没有涉及函数名和参数名之间的任何混淆。我将把它补充到这个问题上。