ホームページ >バックエンド開発 >Python チュートリアル >Python の `eval`、`exec`、および `compile` 関数の違いは何ですか?

Python の `eval`、`exec`、および `compile` 関数の違いは何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-11 18:17:10650ブラウズ

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

eval、exec、compile の違い

はじめに

Python には、コードを動的に実行するための 3 つの強力なツール、eval、exec、compile が用意されています。 。それぞれに特定の目的があり、その違いを理解することが重要です。

eval

Eval は、単一の式を評価するために使用されます。式を表す文字列を受け取り、その値を返します。例:

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

exec

Exec は、コードのブロックを実行するために使用されます。コードを表す文字列を受け取り、None を返します。例:

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

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

compile

Compile は、コードをバイトコードにコンパイルするために使用され、インタプリタで実行できます。コードを表す文字列とモード ('eval'、'exec'、または 'single') を受け取ります。

'eval' モードでは、compile は単一の式をバイトコードにコンパイルし、式の値を返します。 「exec」モードでは、コードのブロックをバイトコードにコンパイルし、None を返します。 「シングル」モードでは、単一のステートメントまたは式をバイトコードにコンパイルし、式の値の再現を出力します。

例:

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

概要

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

以上がPython の `eval`、`exec`、および `compile` 関数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。