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