整数であるかの判定方法【Python】

Python

Pythonで整数であるか判定する方法を2つ紹介します。

  • type()==演算子
  • isinstance()

type()と==演算子

意外とtype()==演算子だけで型の判定ができてしまいます。
type()はオブジェクトの型を得るための組み込み関数です。

ちなみに整数はint型です。

a = 2.3
print(type(a) == float)
# True
b = 4
print(type(b) == int)
# True
c = '5'
print(type(c) == int)
# False

isinstance()

isinstance()は組み込み関数の1つで、オブジェクトがあるクラスのインスタンスであるかを判定します。

公式ドキュメントでの説明はこのようになっています。(翻訳処理適用)

isinstance(object, classinfo)

object が classinfo のインスタンス、またはその(直接、間接、仮想)サブクラスであるとき、真を返す。object が与えられた型のオブジェクトでない場合、この関数は常に False を返します。classinfoが型オブジェクトのタプル(または再帰的に他のタプル)、または複数の型のUnion Typeの場合、objectがいずれかの型のインスタンスであれば、Trueを返します。classinfoが型オブジェクトのタプル(または再帰的にそのようなタプル)でない場合、例外TypeErrorが発生します

組み込み関数 : https://docs.python.org/ja/3/library/functions.html#isinstance

isinstance()を使って判定してみる。

a = 2.3
print(isinstance(a, float))
# True
b = 4
print(isinstance(b, int))
# True
c = '5'
print(isinstance(c, int))
# False

公式ドキュメントに則って、isinstance(object, classinfo)だとするならobjectclassinfo自身のインスタンスでなくてもclassinfoのサブクラスのインスタンスであればTrueが返ってくるようです。注意しましょう。

class Test:
    def test(self):
        print('this is test.')

class Test2(Test):
    def test2(self):
        print('this is test2.')

test = Test()
test2 = Test2()

print(type(test2) == Test)
# False
print(isinstance(test2, Test))
# True

こちらも公式ドキュメントに書いてあることですがclassinfoにタプルで与えることで複数の型を指定し、いずれかのインスタンスであればTrueを返すという処理を行うことができます。

a = 2.3
print(isinstance(a, (int, float)))
# True
b = 4
print(isinstance(b, (float, str)))
# False
c = '5'
print(isinstance(c, (int, str)))
# True

コメント