プログラミング言語での「型」とは「変数に入っているデータの種類」のことを指します。
ここでは「Pythonの型って何?」「どんな型があるの?」「型の具体的な使い方は?」といったことについて解説します。
YouTubeも公開していますので、動画や音声で聞きたい方はぜひご覧ください。
静的型付け言語と動的型付け言語
プログラミング言語には静的型付け言語と動的型付け言語があります。
どちらも型に関する重要なキーワードですが、結論から言うと、Pythonは「動的型付け」言語です。
静的型付けと動的型付けの違いは以下になります。
静的型付け言語
静的型付け言語は変数に入れることができるデータ型をあらかじめ決めるタイプの言語です。
変数を宣言したタイミングでデータ型が決定されるので、後から別の型のデータを入れることはできません。
動的型付け言語
動的型付け言語は変数に入れるデータ型に決まりがないタイプの言語です。
例えば一度変数に数値を入れた後でも、後から文字列やリストなど、別の型のデータを入れることができます。
型の種類
Pythonは動的型付け言語なので、変数宣言時に型を指定しません。しかし、データの型自体がないわけではありません。人間が型を指定しなくても、Pythonが自動的に型を判定してくれています。
Pythonで使われている主な型は以下の通りです。
型名 | 型名(日本語) | 記述例 | 説明 |
---|---|---|---|
str | 文字列 | str = “Hello Python world!” | ダブルクォーテーション、またはシングルクォーテーションでくくる。 |
int | 整数 | num = 123 | 小数点を含まない数値。 |
float | 浮動小数点数 | num = 123.45 | 小数点を含む数値。 |
bool | ブール(論理値) | flag = True flag = False | True(真)とFalse(偽)の2つだけの値を扱う型。 |
datetime | 日付 | date_time = datetime.datetime(2019, 11, 29,12, 34, 56) | 日付を扱うための型。 |
list | リスト | list = [“abc”, 123, True] | 複数のデータを一つの変数でまとめたいときに使う型。 リスト内のデータは変更可能。 データを使いたい時はlist[0]のように添字を使ってアクセスする。 |
tuple | タプル | tuple = (“abc”, 123, True) | 複数のデータを一つの変数でまとめたいときに使う型。 タプル内のデータは変更不可。 |
dictionary | 辞書 | dict = {"Japan" : "Tokyo", "USA" : "Washington"} | 複数のデータを一つの変数でまとめたいときに使う型。 データを使いたい時はdict[“Japan”]のようにkeyを使ってアクセスする。 |
型を調べる
Pythonは変数のデータ型が決まっていないので、変数が何のデータ型かを知りたくなる場合があります。そういった場合、値の型はtypeメソッドで調べられます。
ためしに文字列と整数の型を調べてみましょう。
s = "123" #ダブルクォーテーションでくくっているので文字列で扱われる
i = 123 #ダブルクォーテーションでくくっていないので整数で扱われる
print(type(s))
print(type(i))
[出力結果]
<class 'str'>
<class 'int'>
変数sは文字列、変数iは整数なので、それぞれstr型、int型という結果になりました。
型の変換
型の変換とは、今のデータ型から別のデータ型へ変換することです。
計算で求めた数値を「合計は12です」のように文字列と一緒に出力したい場合、文字列と数値をそのまま文字列連結しようとすると型エラーになります。
total = 5 + 7
print ("合計は" + total + "です") #ここでエラー!
[出力結果]
TypeError: must be str, not int
エラーを回避するには、数値を文字列へ型変換する必要があります。数値から文字列への変換はstr()を使います。
次のように使うことで、数値を文字列に変換し、エラーを回避できます。
total = 5 + 7
print ("合計は" + str(total) + "です")
[出力結果]
合計は12です
また、str()は数値だけじゃなく、他の型でも文字列に変換できます。
今度はboolの型を変換してみましょう。
print ("10 < 20 は" + str(10 < 20) + "です")
[出力結果]
10 < 20 はTrueです
文字列への型変換以外にも、int()を使えば整数、float()で浮動小数点数、bool()で論理値へ変換することができます。
変数の型に応じて条件分岐する
typeメソッドを使って得た型を使って条件分岐するには、次のようにします。
i = 123
if type(i) is str:
print("文字列です")
elif type(i) is int:
print("整数です")
else:
print("文字列、整数以外です")
[出力結果]
整数です
「type() is 型名」とすることで、型ごとの条件分岐ができるようになりました。
上記の変数iには整数が入っているので、type(i) is intがTrueとなり、「整数です」と表示されています。