Die eval()-Funktion in Python
Python ist eine interpretierte höhere Programmiersprache. Es hat eine saubere Codestruktur und Lesbarkeit mit seiner auffälligen signifikanten Einrückung.
Die Funktion eval()
parst das Ausdrucksargument und wertet es dann als Python-Ausdruck aus.
Die Syntax der Funktion eval()
ist unten aufgeführt.
eval(expression, [globals[, locals]])
Der Rückgabewert basiert auf und ist das Ergebnis des ausgewerteten Ausdrucks.
Im folgenden Beispiel werten wir eine einfache Addition aus.
x = 2
eval("x+5")
Ausgabe:
7
Die Argumente der Funktion eval()
sind ein String und optionale Argumente von globals
und locals
. Wenn globals
bereitgestellt werden, muss es sich um ein Dictionary handeln. Die locals
können ein beliebiges Mapping-Objekt sein.
Angenommen, das Dictionary globals
wird bereitgestellt, und der Wert für den Schlüssel wird nicht mitgeliefert. Ein Verweis auf das Dictionary des eingebauten Moduls builtins
wird generiert und unter dem Schlüsselabschnitt eingefügt, bevor der Ausdruck mit dem Parsen beginnt.
Dies deutet grob darauf hin, dass der Ausdruck normalerweise vollständigen Zugriff auf das Standardmodul builtins
hat. Wenn das Objekt locals
nicht bereitgestellt wird, wird standardmäßig das globale Dictionary verwendet. Auch in einem Szenario, in dem beide Wörterbücher weggelassen werden, wird der Ausdruck mit den globals
und locals
in der Umgebung ausgeführt, in der die Funktion eval()
aufgerufen wird.
Es gibt bestimmte Funktionen innerhalb des Moduls builtins
, die das System wahrscheinlich erheblich beschädigen können. Aber es ist sicherlich möglich, alle verdächtigen Dinge zu blockieren.
Betrachten Sie beispielsweise ein Beispiel zum Erstellen einer Liste, die die Anzahl der verfügbaren Kerne im System darstellt.
from os import cpu_count
eval("[1, cpu_count()]")
Ausgabe:
[1, 8]
eval(input())
den Benutzer auf, den String einzugeben und als Code auszuführen. Wenn das Modul os
importiert wird, kann man auf dem Gerät alle möglichen Aktionen ausführen, wie zum Beispiel Dateien löschen und das System manipulieren.