我试图根据在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] 删除。
我来说两句