我阅读了一些关于 Python 中 switch 语句的替代方法的文章。主要使用字典而不是大量的 if 和 elif。然而,没有人真正回答这个问题:有更好的性能或效率吗?我读过一些论据,认为 if 和 elif 必须检查每个语句,并且对于许多 if 和 elif 来说效率低下。然而,使用字典可以解决这个问题,但你最终不得不创建新的模块来调用,这无论如何都会取消性能提升。最终的唯一区别是可读性。
任何人都可以对此发表评论,从长远来看真的有什么不同吗?有人经常使用替代品吗?我问的唯一原因是因为我最终将拥有 30-40 个 elif/if,并且将来可能更多。任何输入表示赞赏。谢谢。
最佳答案
dict
的性能通常是无与伦比的,因为查找 dict
的时间复杂度为 O(1),除非在极少数情况下且几乎从未观察到案例(他们的关键涉及具有糟糕散列的用户编码类型;-)。您不必像您所说的那样“创建新模块”,只需任意可调用对象,并且只执行一次以准备 dict 的创建无论如何不是特别昂贵 - 在操作期间,只需一次查找和一次调用,闪电般的时间。
正如其他人所建议的那样,尝试使用 timeit
来试验一些备选方案的微基准。我的预测:有几十种可能性在起作用,正如你所说的那样,你会拍拍你的额头考虑任何事情但一个可调用的命令!-)
如果您发现运行自己的基准测试太难并且可以提供一些规范,我想我们可以为您对替代方案进行基准测试,但如果您在向 SO 寻求帮助之前尝试自己做,那真的会更有指导意义!-)
关于python - Python 中替代开关的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1692107/