这是使用exec / eval的正确位置吗?

时间:2016-04-29 00:00:48

标签: python eval

所以我一直听到大家说'不要使用执行官,不要使用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的正确用法吗?或者是否有更正确的方法来完成相同的任务?

谢谢

1 个答案:

答案 0 :(得分:3)

没有尝试开始一场火焰战争,但是......不,我觉得exec并非真正有效地使用eval,这是一个非常简单的选择,而且很少有有充分理由使用 dispatch = {'Windows': doCoolStuff_Windows, 'Darwin': doCoolStuff_Darwin} def doCoolStuff(): system = platform.system() if system in dispatch: dispatch[system]()

你可以简单地设置一个像这样的调度字典,或者只使用一个更简单的if语句。

CredentialsHandler