注目キーワード

【Python】変数の型を調べる方法(type)と型を判定する方法(isinstance)

はじめに

この記事では変数データ型を調べる方法や対象の変数が特定のデータ型かどうかを調べる方法について説明します。

具体的には「type関数」、「type is」を使ったデータ型の判定方法、「type in」を使ったデータ型の判定方法、「isinstance関数」の使い方について、サンプルソースを使いながら説明していきたいと思います。

対象レベル

Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。

詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。

type関数を使って型を調べる

まず初めに、「type関数」について説明します。「type関数」は引数にオブジェクトを渡すとどのデータ型か判定してくれます。使い方は以下の通りです。

type(オブジェクト)

下のサンプルソースでは、様々なデータ型で定義した変数を用意しています。そして、それらの変数をリストにつめてfor文でループしながら、どのデータ型か調べています。

以下が実行結果となります。上から順番に「int、float、str、str、bool、list、dict」と正しく型が判定されました。

sample_type.pyを実行

「type is」 を使って型を判定する

「type is」を使うと対象のオブジェクトがどのようなデータ型か判定することが出来ます。使い方は以下のとおりで「type(オブジェクト) is データ型」で判定します。

もし、オブジェクトが指定したデータ型の場合は「True」を返し、一致しない場合は「False」を返します。

type(オブジェクト) is データ型

以下のサンプルソースを見るとforループ内で「type is」を使ってどのデータ型か聞いています(int、float、str 、bool、list、dictの順)。

「 sample_type_is.py 」を実行した結果が以下となります。

はじめに「int」のブロックを代表にみていきましょう。

for文の中の最初の処理(10行目)で対象のオブジェクトがどの型か判定します。そのあとは「type is」を使って型を調べていきます。出力内容を見るとこの場合「1 is int ? 」のところで「True」になっており、それ以外は「False」になっています。

<class 'int'>1 is int ? : True1 is float ? : False1 is str ? : False1 is bool ? : False1 is list ? : False1 is dict ? : False

以下同様に出力内容を見ていくと正しく判定されていることが分かります。

sample_type_is.pyを実行

「 type in 」を使って型を判定する

「type in」は「or」で特定の型を調べるようなイメージです。”()”「 タプル 」で囲われたデータ型に一致した場合に「True」を返し、一致しない場合は「False」を返します。

実際に動かしてみた結果がこちらです。「work_int」と「work_float」のループの出力内容について考えてみると、サンプルソースの11行目で「int型」と「float型」のいずれかの型であるか聞いているので「True」が返ってきます。

<class 'int'>1 is int or float ? : True1 is str or bool ? : False1 is list or dict ? : False<class 'float'>1.1 is int or float ? : True1.1 is str or bool ? : False1.1 is list or dict ? : False

以下同様に「str、bool、list、dict」のパターンでも正常に判定されています。

スポンサーリンク

sample_type_in.pyを実行

「 isinstance 」を使って型を判定する

「isinstance関数」は「type is」と「type in 」を掛け合わしたような動きをします。使い方は以下の2つでデータ型をそのまま指定しても、タプルで複数しても判定してくれます。

isinstance(オブジェクト, データ型)
isinstance(オブジェクト, (データ型1,データ型2))

以下のサンプルソースの11行目と12行目がそのまま指定するパターンで、13行目、14行目がタプルで指定するパターンです。

実行結果を見てみると各ブロックで想定通りに判定されていることが分かります。

sample_type_isinstance.pyを実行

まとめ

「type関数」でデータ型を調べることが出来る。

「type is」(イコール)、「type in」(or)でデータ型の判定ができる。

「isinstance関数」を使ってもデータ型の判定を行うことが出来る。