我正在使用 kivy 为 android 制作一个计算器,它几乎完成了(不能使用 java,因为 python 是我知道的唯一语言)。它的工作方式是,用户输入一个表达式,然后 eval 用于评估该表达式。目前,在我的应用程序中,eval 表达式可以包含数字、数学运算符(+、-、/、*)和数学模块中的大多数运算符(简而言之,它是一个科学计算器),并且可以按预期工作。将来我计划集成 matplotlib 以向应用程序添加图形功能。因此,在上下文中, eval 是一个安全的选择。鉴于我在编程方面的经验有限,我并不认为 eval 在很多情况下都是不安全的方法,就在几天前,我偶然发现了一个讨论与使用 eval 相关的安全问题的线程。
那么将评估更改为我的应用程序中的其他内容更好还是在给定情况下安全?如果对前者是,那么最好的选择是什么而不改变我的代码太多。如果它在python标准库中也会更好,这样我就不会增加应用程序的大小)
编辑:顺便说一句,eval 表达式是实时计算的(不确定这是否重要)。