Alles, was Sie über Eval in Python wissen müssen



Dieser Artikel vermittelt Ihnen ein detailliertes und umfassendes Wissen über Eval in Python. Die Nachteile und Verwendungsmöglichkeiten von Beispielen.

Überall, wo Sie sich umschauen, finden Sie eine Anwendung, die speziell für Ihre Anforderungen entwickelt wurde. Obwohl es viele Programmiersprachen gibt, mit denen diese Anwendungen entwickelt werden können, werden die meisten von ihnen mit erstellt . Python bringt zusammen mit seinen großartigen Funktionen und seiner gesteigerten Vielseitigkeit einzigartige Angebote auf den Tisch, die sowohl leistungsstark als auch äußerst nützlich sind. In diesem Eval in Python-Artikel werden wir die folgenden Punkte diskutieren:

Was ist Eval in Python?

Die Eval-Funktion in Python ist eine der interessantesten Optionen. Einige nennen es einen Hack und andere eine Verknüpfung, aber so oder so können Sie es verwenden, um ein Python-Programm in einem Python-Code auszuführen. Ziemlich cool, oder?





Wenn Sie die Auswertungsfunktion verwenden, fordern Sie den Interpreter grundsätzlich auf, die in der Klammer der Auswertungsfunktion eingeschlossene Funktion auszuführen.

PythonLogo-Eval in PythonDie Syntax für die Verwendung der eval-Funktion in Python lautet:



eval (Ausdruck, global = Keine, Einheimische = Keine)

In der obigen Syntax

  1. Ausdruck: Es ist die Zeichenfolge oder der Code, der bzw. der im Python-Programm selbst als Python-Ausdruck analysiert und ausgewertet wird.



  2. Global: Mit diesem Wörterbuch werden alle globalen Methoden definiert, die zur Ausführung des oben genannten Ausdrucks verfügbar sind. Dies ist eine optionale Entität, deren Verwendung von Ihren Anforderungen abhängt.

  3. Einheimische: Ähnlich wie bei Globals ist dies ein weiteres Wörterbuch, mit dem die verfügbaren lokalen Methoden sowie Variablen angegeben werden.

Schauen Sie sich das folgende Beispiel an, um die Verwendung dieser Funktion besser zu verstehen.

aus dem mathematischen Import * def secret_function (): Rückgabe 'Geheimer Schlüssel ist 1234' def function_creator (): # auszuwertender Ausdruck expr = raw_input ('Geben Sie die Funktion (in Bezug auf x) ein:') # Variable, die im Ausdruck x = verwendet wird int (raw_input ('Geben Sie den Wert von x ein:')) # Auswerten des Ausdrucks y = eval (Ausdruck) # Drucken des ausgewerteten Ergebnisdrucks ('y = {}'. Format (y)) if __name__ == '__main__': function_creator ()

Im obigen Beispiel ist function_creator eine Funktion, die die vom Benutzer beim Ausführen des Programms erstellten mathematischen Ausdrücke auswertet.

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

Analyse

Nachdem Sie den oben freigegebenen Code angezeigt haben, lassen Sie uns ihn etwas weiter analysieren.

  1. Die obige Funktion verwendet eine beliebige Variable im Ausdruck x als Eingabe.

  2. Nach der Ausführung wird der Benutzer aufgefordert, einen Wert für x einzugeben. Danach wird das Ergebnis für das Programm generiert.

  3. Schließlich führt das Python-Programm die Auswertungsfunktion aus, indem es dieAusdruckals Argument.

Nachteile von Eval

Ähnlich wie bei anderen integrierten Funktionen von Python weist auch eval einige Nachteile auf, die ein Problem verursachen können, wenn sie nicht berücksichtigt werden.

Wenn Sie sich das obige Beispiel ansehen, besteht eine der Hauptschwachstellen der Funktion function_creator darin, dass sie alle versteckten Werte im Programm aufdecken und auch eine schädliche Funktion aufrufen kann, da eval standardmäßig alles ausführt, was in ihrer Klammer steht.

Um dies besser zu verstehen, sehen Sie sich das folgende Beispiel an.

Eingabe vom Benutzer

Geben Sie die Funktion (in Bezug auf x) ein: secret_function ()

Geben Sie den Wert von x: 0 ein

Ausgabe:

y = Geheimschlüssel ist 1234

Eine weitere gefährliche Situation bei der Verwendung der Eval-Funktion ist der Import des OS-Moduls. Wenn Sie das Betriebssystemmodul importiert haben, kann Python alle auf Ihrem nativen System vorhandenen Dateien ohne Authentifizierung durch den Benutzer lesen und schreiben. In einem solchen Fall, wenn Sie eine einzelne falsch eingebenCodezeile, alle Ihre nativen Dateien werden möglicherweise gelöscht.

Die Lösung für all diese Nachteile besteht darin, die Fähigkeiten der Bewertungsfunktion einzuschränken.

Eval in Python sicher machen

Eval bietet standardmäßig die Möglichkeit, alle Funktionen zu analysieren, auf die es Zugriff hat oder die bereits definiert wurden. Wenn Sie dies beim Schreiben Ihres Codes berücksichtigen, werden die Funktionen von eval in erheblichem Maße eingeschränkt, sodass Sie sicherstellen, dass nichts schief geht.

Namespaces in c ++

Um dieses Konzept besser zu verstehen, sehen Sie sich das folgende Beispiel an.

aus dem mathematischen Import * def secret_function (): Rückgabe 'Geheimer Schlüssel ist 1234' def function_creator (): # auszuwertender Ausdruck expr = raw_input ('Geben Sie die Funktion (in Bezug auf x) ein:') # Variable, die im Ausdruck x = verwendet wird int (raw_input ('Geben Sie den Wert von x ein:')) # Übergeben der Variablen x im sicheren Wörterbuch safe_dict ['x'] = x # Auswerten des Ausdrucks y = eval (Ausdruck, {'__builtins __': Keine}, safe_dict) # Drucken ausgewertetes Ergebnis print ('y = {}'. Format (y)) wenn __name__ == '__main__': # Liste sicherer Methoden safe_list = ['acos', 'asin', 'atan', 'atan2', 'lid ',' cos ',' cosh ',' grad ',' e ',' exp ',' fabs ',' floor ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # Erstellen eines Wörterbuchs sicherer Methoden safe_dict = dict ([(k, local (). get (k, None)) für k in safe_list]) function_creator ()

Eingabe vom Benutzer

Geben Sie die Funktion (in Bezug auf x) ein: secret_function ()

Geben Sie den Wert von x: 0 ein

Ausgabe:

NameError: Der Name 'secret_function' ist nicht definiert

Wie Sie sehen können, indem Sie den Zugriff auf eval einschränken, wurde die Wahrscheinlichkeit einer falschen Ausgabe, die sich als schädlich erweisen kann, negiert.

Verwendung von Eval

Wie in den obigen Abschnitten erläutert, wird eval aus verschiedenen Sicherheitsgründen nicht so häufig verwendet. Dennoch gibt es bestimmte Anwendungsfälle, in denen sich die Verwendung von eval als hilfreich erweist. Einige der wichtigsten davon sind.

  1. Wenn Sie möchten, dass der Benutzer seine eigenen Scriptlets eingibt, um die Ausgabe des Programms zu ändern, ist die Verwendung der Auswertungsfunktion hilfreich.

  2. Beim Schreiben von Ausdrücken zur Lösung mathematischer Abfragen können Sie eval verwenden, da dies viel einfacher ist als das Schreiben eines Ausdrucksparsers.

Nachdem Sie nun alles über eval wissen, hoffen wir, dass Sie dasselbe in Ihrer täglichen Programmierung verwenden und dabei die Vor- und Nachteile berücksichtigen.

Damit sind wir am Ende dieses Eval in Python-Artikels angelangt. Sie können sich eingehend mit Python und seinen verschiedenen Anwendungen vertraut machen für Live-Online-Schulungen mit 24-Stunden-Support und lebenslangem Zugriff.

Hast du eine Frage an uns? Erwähnen Sie sie im Kommentarbereich von „Eval in Python“ und wir werden uns bei Ihnen melden.