Pythonのオブジェクトが特定のデータ型かを調べるisinstance関数
- 公開日:2018/09/26
- 更新日:2018/10/19
- 投稿者:n bit
Pythonで各オブジェクトのデータ型が引数に指定した特定のデータ型かどうかを調べるときに利用する組み込み関数『isinstance関数』について解説。type関数は学習時によく利用するのに対しisinstance関数は本番のプログラミング環境でよく利用します。
この記事は約 分で読めます。(文字)
isinstance関数とは
isinstance関数はPythonのオブジェクトのデータ型がある特定のデータ型のインスタンスになっているかどうかをチェックするときに利用する組み込み関数です。
前回学習したtype関数によく似ていますが、type関数はそのオブジェクトのデータ型を調べてデータ型の種類名を返すのに対し、isinstance関数は引数で指定したデータ型と適合するかチェックし、適合した場合はTrue、しなかった場合はFalseといった真偽値を返します。
Pythonでオブジェクトのデータ型を調べるtype関数【組み込み関数】
Pythonで各オブジェクトのデータ型を調べるときに利用する組み込み関数『type関数』について解説しています。本番環境よりは学習時によく利用される組み込み関数で、Pythonのプログラミング学習を進めていっている方は最初のうちよく利用するでしょう。
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 | レンジ |
【フリーランス向けの完全無料Pythonプログラミング講座】
dot blogではこの記事以外にも完全無料でフリーランス向けのPythonプログラミング講座を公開中です。フリーランスとして活躍し稼ぐための強力な武器となりますよ。
Python入門講座【無料のプログラミング学習講座】
最近特に注目度が高くなってきているプログラミング言語Python。転職、フリーランス、独立・起業を検討中、日々の業務が忙しい社会人等は今こそ身に付けておきたいスキルの1つ。初心者向けにやさしいプログラミング学習内容のPython入門講座を無料で公開。