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

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

Patricia Arquette
リリース: 2024-12-11 18:17:10
オリジナル
636 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート