Pythonのオブジェクトが特定のデータ型かを調べるisinstance関数のイメージ画像

Pythonのオブジェクトが特定のデータ型かを調べるisinstance関数

  • 公開日:2018/09/26
  • 更新日:2018/10/19
  • 投稿者:n bit

Pythonで各オブジェクトのデータ型が引数に指定した特定のデータ型かどうかを調べるときに利用する組み込み関数『isinstance関数』について解説。type関数は学習時によく利用するのに対しisinstance関数は本番のプログラミング環境でよく利用します。

  • Python

この記事は約 分で読めます。(文字)

isinstance関数とは

isinstance関数はPythonのオブジェクトのデータ型がある特定のデータ型のインスタンスになっているかどうかをチェックするときに利用する組み込み関数です。

前回学習したtype関数によく似ていますが、type関数はそのオブジェクトのデータ型を調べてデータ型の種類名を返すのに対し、isinstance関数は引数で指定したデータ型と適合するかチェックし、適合した場合はTrue、しなかった場合はFalseといった真偽値を返します。

isinstance関数の使い方

isinstance関数の使い方は、第1引数にデータ型の判定を行いたいオブジェクト、第2引数に判定基準とするデータ型を渡します。

type関数と違って引数が2つあることに注意しましょう。

isinstance(データ型の判定を行いたいオブジェクト,  判定基準とするデータ型)
  • データ型の判定を行いたいオブジェクトのデータ型 = 判定基準とするデータ型:True
  • データ型の判定を行いたいオブジェクトのデータ型 ≠ 判定基準とするデータ型:False

isinstance関数を使って実際にそれぞれのオブジェクトのデータ型を判定してみましょう。

str型(文字列)をisinstance関数で判定

文字列を代入した変数をisinstance関数の第1引数、判定基準『str』を第2引数に渡して返される値をチェックしてみます。返された値を出力させるためprint関数等に渡してください。

x = 'テキスト'

print(isinstance(x, str))

出力結果

True

第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

同じようにその他のデータ型もチェックしてみましょう。

int型(整数)をisinstance関数で判定

整数を代入した変数をisinstance関数の第1引数、判定基準『int』を第2引数に渡して返される値をチェックしてみます。

x = 10

print(isinstance(x, int))

出力結果

True
第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

float型(浮動小数点)をisinstance関数で判定

浮動小数点を代入した変数をisinstance関数の第1引数、判定基準『float』を第2引数に渡して返される値をチェックしてみます。

x = 10.5

print(isinstance(x, float))

出力結果

True
第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

bool型(真偽値)をisinstance関数で判定

真偽値を代入した変数をisinstance関数の第1引数、判定基準『bool』を第2引数に渡して返される値をチェックしてみます。

x = True

print(isinstance(x, bool))

出力結果

True
第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

list型(リスト)をisinstance関数で判定

リストを代入した変数をisinstance関数の第1引数、判定基準『list』を第2引数に渡して返される値をチェックしてみます。

x = [10, 20, 30, 'テキスト']

print(isinstance(x, list))

出力結果

True

第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

tuple型(タプル)をisinstance関数で判定

タプルを代入した変数をisinstance関数の第1引数、判定基準『tuple』を第2引数に渡して返される値をチェックしてみます。

x = (10, 20, 30, 'テキスト')

print(isinstance(x, tuple))

出力結果

True

第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

dict型(辞書)をisinstance関数で判定

辞書を代入した変数をisinstance関数の第1引数、判定基準『dict』を第2引数に渡して返される値をチェックしてみます。

x = {'a':10, 'b':20, 'c':30, 'd':'テキスト'}

print(isinstance(x, dict))

出力結果

True

第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

まだ学習していませんがその他にもisinstance関数で扱えるデータ型があります。それらも参考までに紹介しておきましょう。

set型(セット)をisinstance関数で判定

セットを代入した変数をisinstance関数の第1引数、判定基準『set』を第2引数に渡して返される値をチェックしてみます。

x = {10, 25, 40, 65}

print(isinstance(x, set))

出力結果

True

第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

frozenset型(セット)をisinstance関数で判定

frozensetを代入した変数をisinstance関数の第1引数、判定基準『frozenset』を第2引数に渡して返される値をチェックしてみます。

x = frozenset({10, 25, 40, 65})

print(isinstance(x, frozenset))

出力結果

True
第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

complex型(虚数・複素数)をisinstance関数で判定

虚数・複素数を代入した変数をisinstance関数の第1引数、判定基準『complex』を第2引数に渡して返される値をチェックしてみます。

x = 5 + 2j

print(isinstance(x, complex))

出力結果

True
第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

bytes型(バイト)をisinstance関数で判定

バイト文字を代入した変数をisinstance関数の第1引数、判定基準『bytes』を第2引数に渡して返される値をチェックしてみます。

x = b'foo'

print(isinstance(x, bytes))

出力結果

True
第二引数に指定したデータ型と第一引数のオブジェクトのデータ型が適合したため『True』と表示されました。

isinstance関数とif文を使った分岐処理

isinstance関数はtype関数と違ってより実践的なプログラミング構築時に利用されます。主な利用方法はisinstance関数を使ったデータ型の判定結果を使ってif文による分岐処理です。

1つ事例となるサンプルを記述しておきましょう。データ型がint型、float型、str型を判別しその後の実行処理を変更したいといった用途を想定したコードです。

x = 10


if isinstance(x, str):
print('テキスト')
elif isinstance(x, int):
print('整数')
elif isinstance(x, float):
print('浮動小数点')
else:
print('etc')

例えばデータ型によってフロントエンドに出力する際のフォーマットを変更したり、データ型によって計算式を変えたりといったことに活用できます。

また、その後に行う実行処理が特定のデータ型でないとエラーが起こると言った場合は事前にisinstance関数を使ってチェックによる分岐を行っておいても良いでしょう。

今日のdot

isinstance関数で判定できるデータ型の種類も豊富です。下記にisinstance関数で判定できるデータ型の一覧表を用意しておきます。

データ型データ
str文字列
bytes文字列(バイト)
int整数
float浮動小数点
complex虚数・複素数
bool真偽値
listリスト
tupleタプル
dict辞書
setセット・集合
frozensetイミュータブルなセット・集合
rangeレンジ