文字列 文法・環境

【Python】変数が文字列型か判定する方法【type関数、isinstance関数】

Pythonにおいて、変数が文字列型か判定する方法を紹介します。

この記事で分かること

  • type( )関数を用いて文字列型か判定
  • isinstance( )関数を用いて文字列型か判定
  • type( )関数と、isinstance( )関数の使い分け

なお、変数やデータ型については、下記の記事で詳しくまとめているので、併せて参考にしてみてください。

【Python】変数の基本まとめ。データ型の種類、変数の命名規則など。

スポンサーリンク

type( )関数を用いて文字列型か判定

はじめに、type( )関数を用いて、変数が文字列型かどうかを判定する方法を紹介します。

type( )関数は、オブジェクトのデータ型を確認できる、Pythonの組み込み関数です。

以下、type( )関数でデータ型を確認するサンプルコードです。

a = 123
b = 'Apple'
c = True
d = [1,2,3]

print(type(a))
# <class 'int'>

print(type(b))
# <class 'str'>

print(type(c))
# <class 'bool'>

print(type(d))
# <class 'list'>

type( )関数の返り値は、type型のオブジェクトが返されます。

これを文字列型 str と比較することで、変数が文字列型がどうかを判定することができます。

a = 123
b = 'Apple'

print(type(a) is str)
# False

print(type(b) is str)
# True

type( )関数とif文で判定

参考までに、if文と組み合わせる例を紹介します。

以下、サンプルコードです。

a = 123
b = 'Apple'


if type(a) is str :
    print('文字列型です')
else :
    print('文字列型ではありません')
# 文字列型ではありません


if type(b) is str:
    print('文字列型です')
else :
    print('文字列型ではありません')
# 文字列型です

スポンサーリンク

isinstance( )関数を用いて文字列型か判定

isinstance( )関数を用いて、変数が文字列型か判定する方法を紹介します。

isinstance( )関数は、第一引数に変数、第二引数に判定したいデータ型のインスタンスを指定します。
データ型にはタプルを指定することもできます。

書き方

isinstance( 変数, 判定したいデータ型 )

以下、isinstance( )関数でデータ型を判定するサンプルコードです。

a = 123
b = 'Apple'

print(isinstance(a, str))
# False

print(isinstance(b, str))
# True

print(isinstance(a, (str, int)))
# True

isinstance( )関数とif文で判定

参考までに、if文と組み合わせる例を紹介します。

以下、サンプルコードです。

a = 123
b = 'Apple'


if isinstance(a, str) :
    print('文字列型です')
else :
    print('文字列型ではありません')
# 文字列型ではありません

if isinstance(b, str) :
    print('文字列型です')
else :
    print('文字列型ではありません')
# 文字列型ではありません

type( )関数と、isinstance( )関数の使い分け

type( )関数と、isinstance( )関数の使い分けについて紹介します。

type( )関数と、isinstance( )関数では、サブクラスに対する振る舞いが異なります。
・type( )関数で判定:サブクラスの型が一致した場合のみ True
・isinstance( )関数で判定:スーパークラスの型が一致した場合も True

以下、サブクラスに対するtype( )関数とisinstance( )関数の挙動を確認するサンプルコードです。

# スーパークラス
class Parent:
    pass

# サブクラス
class Child(Parent):
    pass


parent_a = Parent()
print(type(parent_a))
# <class '__main__.Parent'>

child_a = Child()
print(type(child_a))
# <class '__main__.Child'>


print(type(child_a) is Parent)
# False

print(type(child_a) is Child)
# True

print(isinstance(child_a, Parent))
# True   
      
print(isinstance(child_a, Child))
# True

isinstance( )関数の場合は、サブクラスのインスタンス(child_a)が、スーパークラスの型(Parent)と一致した場合もTrueとなっています。

クラスの継承関係も含めて判定したい場合は、isinstance関数( )を使用しましょう。

スポンサーリンク

-文字列, 文法・環境
-,