Führen Sie die Anweisung [python] exec, eval aus

exec 2. Integrierte Funktionen

exec(object[, globals[, locals]]) Diese Funktion unterstützt die dynamische Ausführung von Python-Code. Objekt muss eine Zeichenfolge oder ein Codeobjekt sein. Wenn es sich um eine Zeichenfolge handelt, wird sie als eine Reihe von Python-Anweisungen analysiert und ausgeführt (es sei denn, es tritt ein Syntaxfehler auf). Wenn der optionale Teil weggelassen wird, wird der Code in seinem aktuellen Bereich ausgeführt.

Also habe ich hier eine Zeichenkette in das Objekt eingefügt und sie verwendet.

eval

eval(expression, globals=None, locals=None) Nimmt eine Zeichenfolge und optionale Argumente global, lokal. Wenn Sie Globale geben, muss es ein Wörterbuch sein. Wenn Sie Einheimische angeben, kann es sich um ein beliebiges Zuordnungsobjekt handeln. Das Ausdrucksargument wird analysiert und als Python-Ausdruck ausgewertet (technisch gesehen eine Liste von Bedingungen). Die globalen und lokalen Wörterbücher werden dann als globale bzw. lokale Namespaces verwendet.

Wie benutzt man

sample_exec.py


Python 3.5.0
>>> exec("a = 10; b = 13; print(a, b)")
10 13
>>> print(a, b)
10 13
>>> eval(`a + b`)
23

Hier führt exec "a = 10, b = 13, print (a, b)" aus. eval führt a + b aus und gibt seinen Wert zurück. Außerdem ist globals () ein Wörterbuch. Wenn Sie also ein Wörterbuch als Argument angeben, wird es darauf geschrieben.

use_dict.py


Python 3.5.0
>>> a = dict()
>>> exec("b = 1; c = 2", globals(), a)
>>> a
{'b': 1, 'c': 2}
>>> eval("b + c", a)
3

In exec ist a im leeren Diktat "{'b': 1, 'c': 2}". In eval ist globals a und die Werte im Wörterbuch a werden berechnet. In Wirklichkeit berechnen wir also "a ['b'] + a ['c']".

Verwenden Sie dies, um zu versuchen, es wie 'json.loads' zu verwenden.

json_like.py


# exec
''' write file '''
a = [1,2,3,4,5,6]
b = [2,3,4,5,6,7]
with open('test.txt', 'w') as fout:
    fout.write('num_list_a = ' + repr(a))
    fout.write('num_list_b = ' + repr(b))

''' load file '''
exec(open('test.txt').read())
print('a =', num_list_a, '\nb =', num_list_b)

# eval
''' write file '''
a = [1,2,3,4,5]
with open('test2.txt', 'w') as fout:
     fout.write(repr(a))
del a

''' load file'''
num_list_c = eval(open('test2.txt').read())
print('c =', num_list_c)

Ausgabe

output.txt


a = [1, 2, 3, 4, 5, 6] 
b = [2, 3, 4, 5, 6, 7]
c = [1, 2, 3, 4, 5]

Da exec keinen Wert zurückgibt, müssen Sie die Variable als Zeichenfolge definieren. Wenn Sie eval verwenden, wird ein Wert zurückgegeben. Wenn dies einfach ist, können Sie ihn wie json verwenden.

Zusammenfassung

Führen Sie die Python-Anweisung mit exec aus Einzelausdrucksbewertung mit Bewertung

Recommended Posts

Führen Sie die Anweisung [python] exec, eval aus
Python exec-Anweisung
Python - Unterschied zwischen exec und eval
[Einführung in die Udemy Python3 + -Anwendung] 33. if-Anweisung
Python if-Anweisung
Auf Python 2.7.9 aktualisiert
[Python] if-Anweisung
Python-Assert-Anweisung
"Backport" zu Python 2
[Einführung in die Udemy Python3 + -Anwendung] 40. while else-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 43. for else-Anweisung
Führen Sie Power Query aus, indem Sie Argumente an Python übergeben
[Python] Zusammenfassung der Funktionen eval / exec + Schreiben einer Zeichenfolge mit Zeilenumbrüchen
Python-Grundlagen ② für Anweisung
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Schreiben Sie Python2-Code in Python3 um (2to3)
Führen Sie die Python-Datei automatisch aus
So installieren Sie Python
Einführung in die Python-Sprache
Führen Sie Befehle aus Python aus
Einführung in OpenCV (Python) - (2)
Beachten Sie, dass Python ein Daemon ist
Einführung von Python 2.7 in CentOS 6.6
Python Gibt die Funktion an, die ausgeführt werden soll, wenn das Programm endet
Führen Sie die Python-Funktion von Powershell aus (wie Sie Argumente übergeben).
[Einführung in die Udemy Python3 + -Anwendung] 68. Importanweisung und AS
Verbinden Sie Python mit MySQL
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Führen Sie den Befehl von Python aus
Python grundlegende if-Anweisung
[Python] für Anweisungsfehler
[Einführung in die Udemy Python3 + -Anwendung] 42. für Anweisung, break-Anweisung und continue-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 39. while-Anweisung, continue-Anweisung und break-Anweisung
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?
So definieren Sie mehrere Variablen in einer Python for-Anweisung
[Road to Intermediate Python] Verwenden Sie die if-Anweisung in der Listeneinschlussnotation
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Erstellen einer Umgebung zum Ausführen von Python-Programmen unter AWS EC2
Ausführen externer Shell-Skripte und -Befehle in Python
Stellen Sie mit Python eine Verbindung zu BigQuery her
[Neueste Version 2020.8] So installieren Sie Python
[Python] Datum in Zeichenfolge konvertieren
Post von Python nach Slack
So installieren Sie Python [Windows]
poste an vim → Python → Slack
Einführung in Python Django (2) Win
So löschen Sie stdout in Python
Konvertieren Sie numpy int64 in python int
python3: Verwendung der Flasche (2)
[Python] Liste in Pandas konvertieren [Pandas]
Flirte von PHP nach Python
Ein Weg zum mittleren Python
Versuchen Sie, Python selbst zu verstehen
Python-Notizen, die Sie bald vergessen sollten
[Python] Verwendung von Liste 1