¿Qué tan seguro es SymPy’s sympify () .evalf ()?

Sabemos que la eval() de Python eval() es malvada

http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html

y los hilos a lo largo de StackOverflow sugieren usar la evaluación de evalf() .

Como novato de Python, realmente no puedo convencerme de que evalf() es seguro ya que carezco de habilidades. ¿Alguien puede dar más detalles sobre lo que evalf() hace (diferente)?

    No hay nada común entre python eval y sympy evalf (este último es para calcular el valor numérico de los árboles de expresiones sympy y no tiene nada que ver con el análisis, mientras que eval trata de analizar una cadena y evaluarla como si fuera un código).

    Por otro lado, sympify es tan peligroso como eval , porque en realidad usa eval .

    Hay dos modos básicos en los que se usa sympify y probablemente sea una mala idea que se hayan mezclado en la misma función:

    • sympify(some_object) devolvería una representación del objeto más adecuado para su uso en un CAS, como transformar int(1) en sympy.Integer(1)

    • sympify("some_text") analizaría el texto casi directamente a través de eval (busque la importación desde sympy.parsing presente en sympify y sympify ). Es más seguro ya que hay algunas restricciones pero no es seguro .