gpt4 book ai didi

python - 使用Python实现Switch : 'null is not callable'

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:41 25 4
gpt4 key购买 nike

我读过一些关于在 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 不可调用”。

编辑:我一直在尝试多种方法来调用字典中的函数,但我发现了奇怪的行为:这段代码:

    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)()

即使我弄清楚如何选择正确的函数,我如何将参数传递给它们?我很困惑。

最佳答案

假设字典的值是函数。如果是这样,您必须在调用中添加括号:

options["PUSH"]()`

对于参数处理,我建议您将整个拆分列表传递给函数并在那里进行处理。

def push(splitted_list):
param = splitted_list[1]
#do something....

options = {"PUSH": push, "POP": pop, "ADD": add, "SUB": sub, "MUL": mul, "DIV": div, "INPUT": inpt, "OUTPUT": outp,
"EXIT": ext}

choise = "PUSH 1"
splitted = choise.split(" ")
options[splitted[0]](splitted)

这将使用拆分列表调用推送函数,并对调用时传递的参数执行某些操作。

关于python - 使用Python实现Switch : 'null is not callable' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com