【发布时间】:2014-10-15 08:52:35
【问题描述】:
我已经阅读了一些关于在 python 中实现 switch/case 的其他答案,我试图在我的代码中适应它但没有成功:
f = open(prg)
line = f.readline()
splitting = line.split(" ", 1)
options = {"PUSH": push, "POP": pop, "ADD": add, "SUB": sub,
"MUL": mul, "DIV": div, "INPUT": inpt, "OUTPUT": outp,
"EXIT": ext}
options[splitting[0]](splitting[1])
我将为字典中的每个元素实现一个函数。
问题在于 IDE 在options[splitting[0]](splitting[1]) 上说:“null is not callable”。
编辑:我一直在尝试几种方法来调用字典中的函数,但我发现了奇怪的行为: 这段代码:
choice = "PUSH 1"
splitted = choice.split(" ", 1)
options = {"PUSH": push, "POP": pop, "ADD": add, "SUB": sub, "MUL": mul, "DIV": div, "INPUT": inpt, "OUTPUT": outp,
"EXIT": ext}
options["PUSH"]
不正确,因为最后一条语句“无效”说 PyCharm。 但是,如果我将它包含在 try/catch 语句中,它就会消失,即使我执行以下操作也会消失:
options.get("PUSH", lambda: None)()
即使我知道如何选择正确的函数,我如何将参数传递给它们? 我很困惑。
【问题讨论】:
-
该错误意味着
splitting[0]实际上不在字典中。你能显示文件的内容(第一行)吗? -
尝试打印
splitting[0]的值。 -
只有 IDE 显示问题?你执行代码了吗?因为当我通过 shell 尝试它的工作时。
-
嗨谢谢大家。我已经弄清楚了问题所在。问题是我还没有要测试的文件。我将尝试使用 line = 我会在文件中找到的东西,看看会发生什么。
标签: python switch-statement callable