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関数( )を使用しましょう。
スポンサーリンク