eval in Python
Dieser Artikel beschreibt eine in Python integrierte Funktion, eval .
Es ist ein interessantes Hack / Utility in Python, mit dem ein Python-Programm Python-Code in sich selbst ausführen kann.
Die Methode eval() analysiert den an sie übergebenen Ausdruck und führt den Python-Ausdruck (Code) im Programm aus.
Die Syntax von eval lautet:
eval(expression, globals=None, locals=None)
- Ausdruck: Diese Zeichenfolge wird analysiert und als Python-Ausdruck ausgewertet
- globals (optional): Ein Wörterbuch zur Angabe der verfügbaren globalen Methoden und Variablen.
- local (optional): Ein weiteres Wörterbuch zur Angabe der verfügbaren lokalen Methoden und Variablen.
Lassen Sie es uns mit Hilfe eines einfachen Python-Programms erkunden:
from
math
import
*
def
secret_function():
return
"Secret key is 1234"
def
function_creator():
expr
=
input
(
"Enter the function(in terms of x):"
)
x
=
int
(
input
(
"Enter the value of x:"
))
y
=
eval
(expr)
(
"y = {}"
.
format
(y))
if
__name__
=
=
"__main__"
:
function_creator()
function_creator ist eine Funktion, die die vom Benutzer erstellten mathematischen Funktionen auswertet.
Betrachten Sie eine Ausgabe:
Geben Sie die Funktion (in Bezug auf x) ein: x * (x + 1) * (x + 2) Geben Sie den Wert von x: 3 ein y = 60
from
math
import
*
def
secret_function():
return
"Secret key is 1234"
def
function_creator():
expr
=
input
(
"Enter the function(in terms of x):"
)
x
=
int
(
input
(
"Enter the value of x:"
))
safe_dict[
'x'
]
=
x
y
=
eval
(expr, {
"__builtins__"
:
None
}, safe_dict)
(
"y = {}"
.
format
(y))
if
__name__
=
=
"__main__"
:
safe_list
=
[
'acos'
,
'asin'
,
'atan'
,
'atan2'
,
'ceil'
,
'cos'
,
'cosh'
,
'degrees'
,
'e'
,
'exp'
,
'fabs'
,
'floor'
,
'fmod'
,
'frexp'
,
'hypot'
,
'ldexp'
,
'log'
,
'log10'
,
'modf'
,
'pi'
,
'pow'
,
'radians'
,
'sin'
,
'sinh'
,
'sqrt'
,
'tan'
,
'tanh'
]
safe_dict
=
dict
([(k,
locals
().get(k,
None
))
for
k
in
safe_list])
function_creator()