python - 使用字典中的函数作为菜单

标签 python dictionary menu

我正在尝试使用字典而不是一系列 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/

相关文章:

c++ - 第二次将 map 插入 vector 失败

javascript - 折叠菜单区域中的按钮和链接不可点击

python - 在 Python 中使用 Selenium 抓取无限滚动网站

python - 当结果依赖于前面的单元格时如何将函数应用于数组的每个元素

python - 如何使用索引根据键和值将字典拆分为多个字典?

c++ - 将 ruby​​ 哈希转换为 c++ 映射

jquery - 在一页网站的一点更改菜单颜色

html - 推特 Bootstrap : Auto width for pill based menu

python - Pygame字体错误

python - 如何更新动画 matplotlib 图中的刻度标签