Pythonのisinstance()関数とは?使い方をステップバイステップで解説
Pythonのisinstance()関数は、変数が指定したデータ型と一致するかどうかを判定し、TrueまたはFalseを返す組み込み関数です。構文は isinstance(チェックする変数, データ型) の形式で記述します。
プログラミングにおいて、特定の値のデータ型を確認することは非常に一般的な操作です。たとえば、変数に格納された値が文字列なのか数値なのかを確認したい場面は多いでしょう。データ型によってコード上での扱いがまったく異なるためです。
そんなときに役立つのがisinstance()関数です。isinstance()はPythonの組み込みメソッドで、特定の値のデータ型を検証できます。たとえば、ある値が文字列なのかリストなのかを判定するのに使えます。
この記事では、Pythonにおけるisinstance()メソッドの使い方を、具体例とともにわかりやすく解説します。
Python isinstance()関数の概要
Pythonでは、文字列、数値、リスト、タプル、辞書など、さまざまなデータ型を扱います。それぞれのデータ型には、データの格納方法や操作方法に関する固有のルールがあります。たとえば、数値に対しては数学的な計算を実行できますが、文字列に対しては実行できません。
そのため、プログラム内で適切なデータ型を扱っていることを確認することが重要になります。Pythonのisinstanceを使えば、扱っているデータが適切なデータ型として格納されているかどうかを検証できます。
isinstance()は、ある値が特定のデータ型として格納されているかどうかをチェックするPython組み込み関数です。この記事の後半で解説するtype()メソッドとは異なり、isinstance()メソッドは、チェック対象の値が指定したデータ型(または複数のデータ型のいずれか)に該当するかどうかに応じて、TrueまたはFalseのみを返します。
isinstance()の構文は次のとおりです。
isinstance(object, data_types)
isinstance()メソッドは2つの引数を受け取ります。どちらも必須です。
- object:データ型を確認したいオブジェクト
- data_types:オブジェクトの候補となるデータ型(1つ以上)
isinstance()メソッドは、オブジェクトを指定したデータ型と照合します。2つ以上のデータ型と比較したい場合は、data_types引数にタプルを指定する必要があります。
結果として、コードはTrueまたはFalseを返します。オブジェクトが指定したデータ型(またはそのうちの1つ)に該当すればTrue、該当しなければFalseが返されます。
本質的に言えば、isinstanceを使うことは、コードに対して「空欄補充問題」と「解答の選択肢」を提示することに相当します。文は「このオブジェクトは(データ型)である」という形であり、データ型パラメータを指定することでこの文が完成します。例は以下のとおりです。
12は数値であるbooksは数値である
これに対して、コードはTrueまたはFalseを返します。
Python isinstance()の使用例
それでは、isinstance()メソッドの実際の使い方を2つの例で見ていきましょう。まず、ある値が文字列であることを確認したいとします。この場合、次のようなコードが使えます。
print(isinstance("String", str))
このコードは型チェックを行い、関数は True を返します。
"String"は実際に文字列であるため(Pythonでは文字列型をstrと表記します)、プログラムはTrueを返します。
次に、もう少し実践的な例を見てみましょう。
小学2年生のクラス向けのかけ算ゲームを作っているとします。このゲームはユーザーに数学の問題を出題し、ユーザーの答えが正しいかどうかを判定します。プログラムを正しく動作させるためには、ユーザーが数値を入力していることを確認する必要があります。
プレイヤーから受け取った答えが数値かどうかを確認するには、次のようなコードが使えます。
answer = 5 * 8
user_answer = input("5 x 8はいくつ?")
print(isinstance(user_answer, (int, float)))
このコードは False を返します。
プログラムを分解して見てみましょう。最初の行では、プレイヤーに出題した数学の問題の答えを計算しています。この場合の問題は「5 x 8はいくつ?」なので、コードの最初の行に answer = 5 * 8 を記述しています。
次に、input()メソッドを使ってユーザーから回答を取得します。
コードの最終行では、isinstance()を使って、ユーザーの回答(user_answerに格納)が整数(int)または浮動小数点数(float)のいずれかであるかをチェックしています。この2つは、Pythonで数値を表すためのデータ型です。チェック対象のデータ型を格納したタプル (int, float) を作成することで実現しています。
コードがFalseを返したということは、ユーザーの回答が整数でも浮動小数点数でもないことを意味します。
オブジェクトがintやfloatのインスタンスではないことがわかったので、問題の原因を探ってみましょう。input()は、ユーザーが数値を入力した場合でもデフォルトでは文字列を返すため、コードはFalseを返しました。したがって、コードを正しく動作させるには、input()メソッドの結果を整数に変換する必要があります。それは次のコードで実現できます。
answer = 5 * 8
user_answer = int(input("5 x 8はいくつ?"))
print(isinstance(user_answer, (int, float)))
今度はコードを実行すると、True が返されます。
この例と前の例の唯一の違いは、user_answerの行で、int()を使ってinput()メソッドの結果を整数に変換している点です。そのため、プログラムは入力を文字列ではなく整数として認識します。したがって、isinstance()メソッドでこの値のデータ型をチェックすると、値が整数または浮動小数点数であることが確認できるのです。
上記の例では、オブジェクトが特定の組み込みデータ型を持っているかどうかを確認しました。isinstance()メソッドは、オブジェクトと特定のクラスを比較するためにも利用できます。
type() と isinstance() の違い
Pythonで値の型を確認する必要があったことがあれば、type()メソッドを目にしたことがあるかもしれません。type()は、変数や値の型を調べるために使えるPython組み込み関数です。Pythonのtypeメソッドの構文は次のとおりです。
type(data)
たとえば、ある数値がどのデータ型として格納されているかを確認したいとしましょう。次のコードで確認できます。
number = 8 print(type(number))
このコードは次を返します。
<class 'int'>
ご覧のとおり、プログラムはデータの型を返し、このデータが整数として格納されていることを教えてくれます。
type()とisinstance()には大きな違いがあり、状況によってどちらを使うべきかが変わります。単に値のデータ型を知りたいだけであれば、type()の方が適切でしょう。一方、値が特定のデータ型(文字列やfloatなど)として格納されていることを検証したい場合は、isinstance()を使うべきです。
まとめ
Pythonでは、isinstance()関数を使って、値が特定のデータ型を持っているかどうかを検証できます。たとえば、値の集合がリスト型として格納されているか、数値がfloatとして格納されているかを確認したい場合に、isinstance()が活躍します。
このチュートリアルでは、isinstance()を使って値が特定のデータ型を持っているかどうかを確認する方法を解説しました。これで、Pythonマスターのようにisinstance()を使いこなすための基礎知識は身についたはずです。
-
Pythonインタープリターとは?仕組みと初心者向けオンライン環境を徹底解説
Pythonは学びやすいプログラミング言語として知られています。その理由のひとつが、自分のマシンに正しいバージョンのPythonをインストールしなくても、オンラインで利用できるPythonインタープリターが数多く存在する点です。本記事では、Pythonインタープリターの仕組みについて解説し、初心者にも使いやすい人気のオンラインインタープリターをご紹介します。 Pythonプログラムはどのように実行されるのか? PythonはJavaと同様に、純粋なインタプリタ言語ともコンパイラ言語とも分類できず、両方の性質を併せ持っています。 ここでいう「コンパイル」とは、特定のプラットフォームに依存し
-
Pythonでファイル名を変更する方法:os.rename()の基本と実践例
Pythonのos.rename()メソッドは、ファイルの名前を変更するための機能です。このメソッドは「変更前のファイルパス」と「変更後のファイルパス」という2つの引数を受け取ります。新しいファイルパスには、元とは異なるファイル名を指定する必要があります。 Pythonでファイルを扱っていると、特定のファイルの名前を変更したくなることがあります。たとえば、raw_data.csvというファイルがあった場合、プログラムの実行時にこれをold_data.csvにリネームしたいケースなどが考えられます。 そんなときに役立つのが、os.rename()メソッドです。このメソッドを使えば、Pyt