Python はじめました:組み込み関数 compile: 引数 mode=
Python.use(better) # Python はじめました《記事一覧》
組み込み関数 compile: 引数 mode=
《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28
関連記事
引数 mode="eval"
引数 mode="eval" を指定すると、source= に有効な「式」を記述できます。
>>> code = compile("a+4","","eval") >>> eval(code) Traceback (most recent call last): File "", line 1, in File "", line 1, in
空文字列 filename="" を指定すると、エラーメッセージから詳細な情報が得られません。そこで、
>>> code = compile("a+4","ex.py","eval") >>> eval(code) Traceback (most recent call last): File "", line 1, in File "ex.py", line 1, in NameError: name 'a' is not defined
引数 filename="ex.py" を指定すると、より詳細な情報が得られます。ここでは、変数 a が未定義なので、式を評価できません。例外 NameError を生成して、エラーメッセージを出力します。そこで、
>>> a = 3 >>> eval(code) 7
変数 a に値 3 を設定すると、式 "a+4" を評価して値 7 が得られます。
>>> code = compile("a=3","ex.py","eval") Traceback (most recent call last): File "", line 1, in File "ex.py", line 1 a=3 ^ SyntaxError: invalid syntax
引数 mode="eval" では、有効でない「式」を指定すると、例外 SyntaxError を生成して、エラーメッセージを出力します。この問題を解消するのが、次に示す mode="single" です。
引数 mode="single"
引数 mode="eval" を指定すると、source= に有効な「文」を記述できます。
>>> code = compile("a=3","ex.py","single") >>> eval(code)ただし、文は値を返さないので、何も出力されません。そこで、>>> a 3変数 a の値を確認すると、3 になっているのが分かります。または、次のように、>>> code = compile("a=4;a","ex.py","single") >>> eval(code) 4
複数の式をセミコロン「;」で続けても、変数 a の値を確認できます。>>> code = compile("for e in range(3): print(e)","ex.py","single") Traceback (most recent call last): File "引数 mode="single" では、有効でない「文」を指定すると、例外 SyntaxError を生成して、エラーメッセージを出力します。この問題を解消するのが、次に示す mode="exec" です。", line 1, in File "ex.py", line 1 for e in range(3): print(e) ^ SyntaxError: unexpected EOF while parsing 引数 mode="exec"
引数 mode="exec" を指定すると、source= に有効な「モジュール」を記述できます。>>> code = compile("for e in range(3): print(e)","ex.py","exec") >>> eval(code) 0 1 2
for に続く制御変数 e の値が、順に出力されます。Last updated♪09/03/16