所有的键都被选中在字典中的Python中。

9 浏览
0 Comments

所有的键都被选中在字典中的Python中。

我正在尝试使用字典编写一个使用switch case的代码,并调用其中的函数。但是,所有的{key,value}对都被打印出来了:

定义一个添加单词的函数:

def addWord():

打印 "添加单词"

定义一个搜索单词的函数:

def searchWord():

打印 "搜索单词"

定义一个显示所有单词的函数:

def displayAll():

打印 "显示所有单词"

#执行选择

def switch_choice(choice):

switcher = {

1:addWord(),

2:searchWord(),

3:displayAll()

}.get(choice,"无效输入")

#主程序

打印 "请输入你的选择"

打印 "1.添加新单词"

打印 "2.搜索单词"

打印 "3.显示所有单词"

choice=input()

switch_choice(choice)

输出结果 -

请输入你的选择

1.添加新单词

2.搜索单词

3.显示所有单词

1

添加单词

搜索单词

显示所有单词

请问有人可以告诉我原因吗?

0
0 Comments

问题的原因是在字典中存储的不是函数本身,而是函数调用的结果。解决方法是不要调用函数对象,而是调用dict.get()方法的结果。

在Python中,函数只是对象,而()部分只是一个语法片段,可以应用于任何表达式;只要表达式产生的是可调用的东西(比如函数对象),Python就可以接受。

需要注意的是,我给dict.get()方法传递了一个lambda表达式作为默认值;如果choice的值不是字典中的键,仍然需要返回一个可调用的东西。

0