Heim >Backend-Entwicklung >Python-Tutorial >Was sind die Unterschiede zwischen den Python-Funktionen „eval', „exec' und „compile'?

Was sind die Unterschiede zwischen den Python-Funktionen „eval', „exec' und „compile'?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-11 18:17:10645Durchsuche

What are the Differences Between Python's `eval`, `exec`, and `compile` Functions?

Der Unterschied zwischen Eval, Exec und Compile

Einführung

Python bietet drei leistungsstarke Tools zum dynamischen Ausführen von Code: Eval, Exec und Compile . Jeder dient einem bestimmten Zweck und es ist wichtig, die Unterschiede zu verstehen.

eval

Eval wird verwendet, um einen einzelnen Ausdruck auszuwerten. Es nimmt eine Zeichenfolge, die den Ausdruck darstellt, und gibt seinen Wert zurück. Zum Beispiel:

a = 5
result = eval('a + 10')
print(result)  # Output: 15

exec

Exec wird verwendet, um einen Codeblock auszuführen. Es nimmt eine Zeichenfolge, die den Code darstellt, und gibt None zurück. Zum Beispiel:

my_code = """
for i in range(5):
    print(i)
"""

exec(my_code)
# Output:
# 0
# 1
# 2
# 3
# 4

compile

Compile wird verwendet, um Code in Bytecode zu kompilieren, der dann vom Interpreter ausgeführt werden kann. Es benötigt eine Zeichenfolge, die den Code darstellt, und einen Modus („eval“, „exec“ oder „single“).

Im „eval“-Modus kompiliert „compile“ einen einzelnen Ausdruck in Bytecode, der den Wert des Ausdrucks zurückgibt. Im „exec“-Modus kompiliert es einen Codeblock in Bytecode, der None zurückgibt. Im Einzelmodus wird eine einzelne Anweisung oder ein einzelner Ausdruck in Bytecode kompiliert, der die Darstellung des Werts des Ausdrucks ausgibt.

Zum Beispiel:

bytecode = compile('a + 10', 'my_code', 'eval')
result = eval(bytecode)
print(result)  # Output: 15

bytecode = compile("""
for i in range(5):
    print(i)
""", 'my_code', 'exec')
exec(bytecode)
# Output:
# 0
# 1
# 2
# 3
# 4

Zusammenfassung

Function What it does
eval Evaluates a single expression
exec Executes a block of code
compile Compiles code into bytecode

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen den Python-Funktionen „eval', „exec' und „compile'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn