Pythonのeval関数について現役エンジニアが解説【初心者向け】

初心者向けにPythonのeval関数について現役エンジニアが解説しています。eval関数とは、文字列をPythonのコードとして実行するための関数です。eval関数を使うことで文字列を式として評価することができます。eval関数の書き方や使い方、引数のオプションについて解説します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Pythonのeval関数について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonのeval関数について詳しく説明していくね!

大石ゆかり

お願いします!

この記事では、Pythonにおいて文字列をPythonコードとして実行することのできる組み込み関数であるeval関数について解説します。

目次

 

eval関数とは

eval関数はPythonにおいて、文字列をPythonのコードとして実行するための関数です。

例えば、

print("2 + 3")

というコードを実行したとすると、”2 + 3″が文字列として表示されます。

これは、ダブルクオーテーション(“)で囲われた部分のコードが「文字列」、すなわち、ただの文字の羅列として認識されているからです。

一方、上のprint関数の引数をeval関数の引数として代入すると、

eval("2 + 3")

文字列が「式」として評価され、実行され、

5

のように出力されます。

このように、eval関数を用いることで、文字列を、「文字列」としてではなく、「式」として評価できます。

[PR] Pythonで挫折しない学習方法を動画で公開中

eval関数の使い方

eval関数の使い方としては

eval("式", globals=None, locals=None)

となります。

第1引数の”式”には、ダブルクオーテーションで囲った式を代入します。

第2引数と第3引数には、任意でそれぞれグローバル、ローカルの「名前空間」を指定しますが、これらはeval関数の基本的な使い方については理解するにはそれほど重要ではないので、詳しい説明はここでは省略します。

eval関数の返り値としては、第1引数で指定した式の値が返されます。

なので、eval関数を使って結果を変数に格納したい場合には、

変数 = eval("式")

とします。

実際に使ってみよう

それでは、実際にコードを書いて使ってみることで、eval関数の使い方について確認してみましょう。

# print関数で文字列を出力した場合(そのまま文字列が表示される)
>>> print("1 + 2 + 3")
出力:1 + 2 + 3
# eval関数を使った場合
>>> num = eval("1 + 2 + 3")
>>> print(num)
出力:6

# 変数も使うことができる

# 変数を定義
>>> a = 10
# print関数を使った場合、そのまま表示される
>>> print("a * num")
出力:a * num
# eval関数を使った場合
>>> b = eval("a * num")
>>> print(b)
出力:60

 

まとめ

この記事ではeval関数を使って文字列を式として評価する方法について解説しました。

文字列を式として扱う場合には参考にしてみてください。

監修してくれたメンター

メンターOS

AIプログラミングを使って開発を行う。

プログラミング歴は約3年でPythonは割と得意。好きな物理理論は一般相対性理論で動物も好き。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。