Pythonでeval()関数を使用する

Pythonでeval()関数を使用してみます。

eval()関数は、指定された式が、「数式」であるか「論理式」であるかを評価することができます。

■構文(引数,パラメータ)

eval(expression, globals, locals)

expressionは、文字列を渡します。渡す文字列はコードとして評価されるものです。

globalsは、グローバルパラメータを含む辞書。これはオプションになります。

localsは、ローカルパラメータを含む辞書。これはオプションになります。

■Python

Google Colaboratory(Google Colab),Python3.7.13

■実際にeval()関数を使用する

では、実際にeval()関数に引数,パラメータとして、コードとして評価される文字列を渡して、どのような結果が返されるのかを見ていきます。

■コード

x = eval('4*4')

print(x)

今回はxという変数を定義し、その中でeval()関数を用います。括弧内には引数,パラメータとして、シングルクォーテーションを用いて数式を渡します。これで渡した文字列が解析され数式を判断し、結果が返されます。返された結果はx変数に格納されます。

格納後、print()を用いてx変数の情報を出力します。

■実行・検証

では、このスクリプトを実行してみます。

実行してみると、eval()関数を用いたことで、引数,パラメータとして渡した文字列が、「数式」であるか「論理式」であるかが評価され結果が返され、結果を出力させることができました。

■引数,パラメータを渡す際にシングルクォーテーションを用いない場合

なお、文字列を引数,パラメータとして渡す際にシングルクォーテーションを用いない場合は下記のエラーが出力されます。

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-d5110f13d631> in <module>()
----> 1 x = eval(4*4)
2
3 print(x)

TypeError: eval() arg 1 must be a string, bytes or code object

コメント

タイトルとURLをコピーしました