記事内にはプロモーションが含まれています

【Python】変数の型を確認する方法!type()とisinstance()の違いや型チェックのコツ

【Python】変数の型を確認する方法!type()とisinstance()の違いや型チェックのコツ Python

Pythonは動的型付け言語であるため、変数を宣言する際に型を指定する必要がありません。

しかし、開発が進むにつれて「この変数には今、何が入っているのか?」を確認したくなる場面や、「数値なら計算、文字列なら結合」といったように、型に応じた処理の分岐が必要になる場面が必ず訪れます。

type()関数を使えばいいんでしょ?」と思っている方も多いかもしれませんが、実は型判定に type() を使うことは推奨されていないケースが多くあります。

この記事では、Pythonにおける変数の型確認の基本である type()isinstance() の違いから、条件分岐での正しい使い方、そして現在の開発現場で主流となっている「静的型チェック(型ヒント)」の活用まで、実務で役立つ知識をサンプルコード付きで徹底解説します。

【本記事の信頼性】
プロフィール
執筆者:マヒロ
  • 執筆者は元エンジニア
  • SES⇒大手の社内SE⇒独立
  • 現在はプログラミングスクールを運営
  • モットーは「利他の精神」
💻 本記事の検証環境(2026年2月確認)
  • OS:Windows 11 / macOS Sequoia
  • IDE:Visual Studio / VS Code / IntelliJ IDEA
  • その他:Chrome DevTools / 各言語最新安定版

※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。

変数の型を確認する最も基本的な方法:type()

まずは、変数が何の型なのかをコンソールに表示して確認したい場合に使う、最もシンプルな方法から紹介します。 これには、組み込み関数の type() を使用します。

type()関数の使い方

引数に調査したい変数や値を渡すだけで、そのオブジェクトの型(クラス)を返してくれます。

# 整数
num = 100
print(f"100の型: {type(num)}")

# 文字列
text = "Python"
print(f"Pythonの型: {type(text)}")

# リスト
items = [1, 2, 3]
print(f"リストの型: {type(items)}")

実行結果

100の型: <class 'int'>
Pythonの型: <class 'str'>
リストの型: <class 'list'>

type() 関数は、<class 'int'> のような形式で型情報を返します。

デバッグ時(開発中に変数の中身を確認する時)に、「なぜかエラーが出ると思ったら、数値のつもりが文字列になっていた」といった原因を特定するのに非常に便利です。

型判定(条件分岐)には isinstance() を使うべき理由

「変数が文字列だったら処理A、数値だったら処理B」といった条件分岐を行いたい場合、ついつい type() を使って比較したくなりますが、Pythonでは isinstance() 関数を使うのがベストプラクティスです。

type() と isinstance() の違い

なぜ type() による比較(type(obj) == int など)が推奨されないのでしょうか。 それは、継承関係(親子関係)を正しく判定できないからです。

# 親クラス
class Animal:
    pass

# 子クラス(Animalを継承)
class Dog(Animal):
    pass

pochi = Dog()

# type() での判定
# Dog型はAnimal型と「一致」はしないため False になる
print(f"type判定: {type(pochi) == Animal}")

# isinstance() での判定
# Dog型はAnimal型の一種(サブクラス)なので True になる
print(f"isinstance判定: {isinstance(pochi, Animal)}")

実行結果

type判定: False
isinstance判定: True

オブジェクト指向プログラミングでは、「犬(Dog)は動物(Animal)である」というように、サブクラスを親クラスとして扱いたい場面が多々あります。

isinstance(オブジェクト, クラス) は、そのオブジェクトが指定したクラス、またはそのサブクラスのインスタンスであれば True を返します。

これにより、柔軟でバグの少ないコードを書くことができます。

複数の型をまとめて判定するテクニック

isinstance() の第2引数には、複数の型をタプルで渡すことができます。
「整数または浮動小数点数ならOK」といった判定が簡単に書けます。

value = 3.14

# int型 または float型 なら True
if isinstance(value, (int, float)):
    print("これは数値です")
else:
    print("これは数値ではありません")

実行結果

これは数値です

実務で役立つ!型ごとの判定パターン集

ここでは、開発時によく遭遇する具体的な型の判定パターンをいくつか紹介します。

文字列(str)かどうかの判定

data = "Hello"

if isinstance(data, str):
    print("文字列です。処理を続行します。")

リスト(list)やタプル(tuple)かどうかの判定

data = [1, 2, 3]

if isinstance(data, (list, tuple)):
    print("シーケンス(配列のようなもの)です。")

辞書(dict)かどうかの判定

data = {"key": "value"}

if isinstance(data, dict):
    print("辞書型です。")

Pythonにおける「型」の種類の基本

Pythonには多くの組み込み型が存在します。
判定を行う際によく使う代表的なものを整理しておきましょう。

型の名前 クラス名
整数 int 10, -5
浮動小数点数 float 3.14, 1.0
文字列 str "Hello", 'Python'
真偽値 bool True, False
リスト list [1, 2, 3]
タプル tuple (1, 2)
辞書 dict {"a": 1}
セット set {1, 2, 3}
None NoneType None

None の判定には isinstance ではなく、if value is None: を使うのが一般的です。

【上級編】型ヒントと静的型チェックの活用

最近のPython開発(特に大規模開発)では、実行時に型を確認するだけでなく、コードを書く段階で型を指定する「型ヒント(Type Hints)」が主流になっています。

型ヒントの書き方

関数の引数や戻り値、変数に : 型名 を付けることで、意図した型を明示できます。

# 引数はint、戻り値もintと明示
def add_numbers(a: int, b: int) -> int:
    return a + b

result = add_numbers(10, 20)

これ自体はプログラムの動作に影響を与えませんが、VS Codeなどのエディタがこれを読み取り、誤った型を渡そうとした時に警告を出してくれるようになります。

静的型チェックツール「mypy」

さらに、mypyなどのツールを導入することで、実行前に型のエラーを検出できます。

「動かしてからエラーに気づく」のではなく、「書いている最中に気づく」ことができるため、開発効率と品質が劇的に向上するため、現在、業務レベルのPythonプロジェクトでは必須級の技術となっています。

Pythonのスキルを活かして年収を上げる方法

以上、Pythonで変数の型を確認する方法について解説してきました。

なお、Pythonのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。

Pythonエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。

なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
今すぐ転職する気がなくとも、とりあえず転職エージェントに無料登録しておくだけで、スカウトが届いたり、思わぬ好待遇の求人情報が送られてきたりするというメリットがあります。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなPythonの案件を探しやすくなります。

転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
エンジニアのキャリア・スキルアップ相談窓口
当ブログの読者に選ばれている、実績豊富な転職エージェントを厳選しました。
【転職】年収・環境を改善したい
年収アップにこだわりたい方 (平均アップ額138万円の実績)
未経験・経験者問わず幅広く探したい方
業界に精通した担当者に相談したい方
ゲーム業界への転職を志望する方
エンジニア未経験からキャリアを築く方
【独立】フリーランスとして稼ぎたい
国内最大級のフリーランス案件数から比較したい方
週1〜3日など柔軟な働き方を希望する方
【学習】スキルに不安のある方向け(格安スクール「デイトラ」)