Python eval()-Funktion

Python3 内置函数Python3 integrierte Funktionen


eval()Ist eine in Python integrierte Funktion, die verwendet wird, um Python-Ausdrücke in Zeichenketten auszuführen.

eval()Akzeptiert eine Zeichenkette, führt sie als Python-Code aus und gibt das Ausführungsergebnis zurück. Es ist eine leistungsstarke Funktion, aber unsachgemäße Verwendung kann Sicherheitsrisiken mit sich bringen.

Wortdefinition: evalJaevaluateAbkürzung für (evaluation).


Grundlegende Syntax und Parameter

Syntaxformat

eval(expression, globals, locals)

Parameterbeschreibung

  • Parameterausdruck:
    • Typ: String
    • Beschreibung: Der Python-Ausdruck, der ausgeführt werden soll.
  • Parameter globals(optional):
    • Typ: Dictionary
    • Beschreibung: Globaler Namensraum.
  • Parameter locals(optional):
    • Typ: Dictionary
    • Beschreibung: Lokaler Namensraum.

Funktionsbeschreibung

  • Rückgabewert: Gibt das Ausführungsergebnis des Ausdrucks zurück.
  • Sicherheitswarnung: Nicht bei nicht vertrauenswürdigen Eingaben verwendeneval(), da dies zu Code-Injection-Angriffen führen kann.

Beispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

# Berechne einen mathematischen Ausdruck
result = eval("1 + 2 + 3")
print(result)  # Ausgabe: 6

# Variablen verwenden
x = 10
result = eval("x * 2")
print(result)  # Ausgabe: 20

# Komplexer Ausdruck
result = eval("2 ** 3 + 4 * 5")
print(result)  # Ausgabe: 28

# Funktionsaufruf
result = eval("len('hello')")
print(result)  # Ausgabe: 5

Erwartete Ausgabe:

6
20
28
5

Code-Erklärung:

  1. eval()Kann arithmetische Ausdrücke ausführen.
  2. Kann auf definierte Variablen verweisen.
  3. Kann integrierte Funktionen aufrufen.

Beispiel 2: Eingeschränkte Umgebung

Beispiel

# Verfügbare Funktionen und Variablen einschränken
x = 10
y = 20

# Ein eingeschränktes globales Wörterbuch erstellen
safe_dict = {"x": x, "y": y, "abs": abs}

result = eval("x + y", safe_dict)
print(result)  # Ausgabe: 30

# Zugriff auf gefährliche Funktionen verbieten
try:
    eval("__import__('os').system('ls')", {})
except NameError as e:
    print(f"Sicherheitsbeschränkung: {e}")

Erwartete Ausgabe:

30
安全限制: name '__import__' is not defined

Dieses Beispiel zeigt, wie man dieeval()Sicherheit durch Einschränken des globals-Wörterbuchs verbessert.


Python3 内置函数Python3 integrierte Funktionen


Andere Erweiterungen