我们知道Python的eval()是邪恶的
http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
StackOverflow中的线程和线程建议使用SymPy的evalf().
作为一个Python新手,我无法说服自己evalf()是安全的,因为我缺乏技能.任何人都可以详细说明evalf()做什么(不同)?
解决方法:
python eval和sympy evalf之间没有任何共同点(后者用于计算sympy表达式树的数值,它与解析无关,而eval则用于解析字符串并将其评估为代码).
另一方面,同情与eval一样危险,因为它实际上使用了eval.
使用sympify有两种基本模式,并且可能在同一函数中混合它们可能是一个坏主意:
> sympify(some_object)将返回更适合在CAS中使用的对象的表示,例如将int(1)转换为sympy.Integer(1)
> sympify(“some_text”)几乎可以直接通过eval解析文本(从sympy中查找来自sympy.parsing的导入并跟随它).它更安全,因为有一些限制,但它不安全.
标签:string-parsing,python,eval 来源: https://codeday.me/bug/20191006/1858317.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。