Non c'è nulla comune tra pitone eval
e sympy evalf
(quest'ultimo è per calcolare il valore numerico di alberi di espressione sympy e ha nulla a che fare con l'analisi, mentre eval
è tutto analizzare una stringa e valutare come se è un codice).
D'altra parte, sympify
è altrettanto pericoloso come eval
, perché in realtà utilizza eval
.
Ci sono due modalità di base in cui sympify
è usato e probabilmente è una cattiva idea che hanno ottenuto mescolati nella stessa funzione:
sympify(some_object)
restituirebbe una rappresentazione dell'oggetto più adatto per l'uso in un CAS, come trasformare int(1)
in sympy.Integer(1)
sympify("some_text")
sarebbe analizzare il testo quasi direttamente attraverso eval
(ricerca per l'importazione da sympy.parsing
presente in sympify
e seguilo). È più sicuro in quanto vi sono alcuni vincoli ma è non sicuro.
Non ci sono suggerimenti per utilizzare 'evalf' invece di' eval' in quanto non hanno nulla in comune. Ci sono suggerimenti per usare 'sympify' invece di' eval', ma (da un punto di vista della sicurezza) sono fuorvianti in quanto sono sostanzialmente uguali. – Krastanov