我正在尝试使用字典而不是一系列 if、elif 语句来创建一个简单的菜单。我的问题是当我将它们声明为字典中的定义时调用的函数。另外,我在尝试调用字典时遇到了错误。
我知道声明中遗漏了一些内容。我在定义中放入什么并不重要,如果它是可执行代码,那么它会在声明时执行,而不是在我调用它时执行。
至于调用字典的问题,我完全迷失了,从我读过的所有内容来看,我相信我做得正确。我已经包含了我正在尝试做的事情的一个过于简化的版本,它复制了我遇到的问题。
def hello():
print("Hello")
def goodbye():
print("Goodbye")
options = { '1' : hello(),
'2' : goodbye()}
chosen = '1'
options[chosen]()
这是执行上述命令时得到的结果。
Hello
Goodbye
Traceback (most recent call last):
File "main.py", line 12, in <module>
options[chosen]()
TypeError: 'NoneType' object is not callable
我应该看看这个。
Hello
最佳答案
只需从字典中的函数中删除括号即可。将它们留在那里会导致在声明字典时调用函数。
此外,您还会收到错误,因为放入字典中的值是函数的返回值,即 None
,而调用 None()
则无济于事;-)
关于python - 使用字典中的函数作为菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56957643/