所以我一直听到大家说'不要使用执行官,不要使用eval等等。"但我想知道在这种情况下使用它是否正确。
我有多个函数可以为不同的操作系统执行相同的操作:
def doCoolStuff_Windows():
# do cool stuff here, windows edition
def doCoolStuff_Darwin():
# do cool stuff here, mac edition
然后我有一个主功能,可以检测用户的操作系统并为其运行正确的功能。
我决定不再做一个巨大的if-else事情,使用这样的exec会更容易:
def doCoolStuff():
system = platform.system()
exec "doCoolStuff_%s()" % system
这是exec的正确用法吗?或者是否有更正确的方法来完成相同的任务?
谢谢
答案 0 :(得分:3)
没有尝试开始一场火焰战争,但是......不,我觉得exec
并非真正有效地使用eval
,这是一个非常简单的选择,而且很少有有充分理由使用 dispatch = {'Windows': doCoolStuff_Windows, 'Darwin': doCoolStuff_Darwin}
def doCoolStuff():
system = platform.system()
if system in dispatch:
dispatch[system]()
。
你可以简单地设置一个像这样的调度字典,或者只使用一个更简单的if语句。
CredentialsHandler