compile() Python 組み込み関数

組み込み関数 compile()

compile()
sourceをコードオブジェクト、または、ASTオブジェクトにコンパイルをします。
コードオブジェクトは、exec()文で実行したり、eval() 呼び出しで評価ができます。
sourceは、通常の文字列、バイト列、ASTオブジェクトのいずれでも問題ありません。

filename引数には、コードの読み出し元のファイルを与える必要があります。
mode引数は、コンパイルされるコードの種類を指定します。

引数optimizeは、コンパイラの最適化レベルを指定します。
デフォルトの値 -1 は、インタプリタの -O オプションで与えられるのと同じ最適化レベルを選びます。
明示的なレベルは、0 (最適化なし、debugは真)、1(assertは取り除かれ、debug は偽)、2 (docstringも取り除かれます。)

この関数は、コンパイルされたソースが不正である場合は、SyntaxErrorを、ソースがヌルバイトを含む場合は、ValueErrorを送出します。

引数source、filenameを指定して監査イベントcompileを送出します。

複数行に渡るコードの文字列を「single」や「eval」モードでコンパイルする場合、codeモジュールで、不完全な文を検知しやすくするため、入力は一つ以上の改行文字で終端される必要があります。

使用例

source = '''a = 1
b = 2
ab = a + b
'''

code_obj = compile(source, '<string>', 'exec')

exec(code_obj)
print(a, b, ab) 
# 実行結果 1 2 3

source = '1 + 2'

code_obj = compile(source, '<string>', 'eval')

print(eval(code_obj))
# 実行結果 3
よかったらシェアしてください!
目次