如何使用Python中的函数编写switch case语句?

库拉桑加

我试图根据在SO中看到的示例创建字典(以实现切换器),并提出了以下建议:

def filter_on_arg(arg):
    switcher = {
        'can': get_can(table_name, filename, arg),
        'aus': get_aus(table_name, filename, arg)
    }
    return switcher.get(arg, "Invalid arg")

但是当我尝试编译并运行脚本时,arg的值为aus它仍在执行第一个方法get_can,从中我认为上述方法有问题。

我也尝试使用NeoPySwitch库,但是使用pip安装它时出现了一些问题。

我使用切换器,而不是if / elif; 这样我就可以基于键调用上面的函数。

米斯蒂鲁

定义字典时,将先评估键,然后再将其存储在字典中。因此,在您的情况下,每次运行该行时switcher = ...,都会get_...评估所有功能。

相反,您可以使用lambdas来使值“ lazy”:

def filter_on_arg(arg):
    switcher = {
        'can': lambda: get_can(table_name, filename, arg),
        'aus': lambda: get_aus(table_name, filename, arg),
    }
    return switcher.get(arg, lambda: "Invalid arg")()

(注意()之后的get()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章