Pythonの「型と型変換」について詳しく解説!初心者にもわかりやすく説明!

PRについて
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
Pythonの「型と型変換」について詳しく解説!初心者にもわかりやすく説明! 初心者向け
Pythonの「型と型変換」について詳しく解説!初心者にもわかりやすく説明!
スッキリわかるPython入門

Pythonプログラミング初心者に向けて、型(かた)の基本について解説します。

ごまこ
ごまこ

今回「型(かた)」という言葉を初めて聞きました。
「型」っていったいどういうものなんですか?

ごまお
ごまお

いままで「文字列」と「数値」を使ってPythonの勉強をいっぱいしてきました!
実は文字列や数値も厳密にはいろんな「型」に分類されるんです!

これまで何気なく「文字列」や「数値」を扱ってきましたが、実はPython内部では変数に入っている値によってデータの格納され方が違います。

例えば、「文字列」は「文字列型(str型)」というデータ形式で内部的に保存されています。

まずはこれまで扱ってきたデータの「型」分類を見ていきましょう。

基本的な型の一覧

これまで扱ってきた変数や値は以下の型に分類されます。

変数の場合、代入されているものに合わせて型が決まります。

型の名前各型の例補足
文字列型(str型)str1 = "文字列"これまで扱ってきた「文字列」は
文字列型(str型)です。
整数型(int型)num_int = 10これまで扱ってきた「数値」のなかで、
「整数」を用いた場合、整数型(int型)です。
小数型(float型)num_float = 3.7これまで扱ってきた「数値」のなかで、
「小数」を用いた場合、小数型(float型)です。
型の基本分類

ここで紹介した型以外にも「リスト型(list型)」「タプル型(tuple型)」など、本当に多くの型があります。

いまは「他にも型があるんだ~」ぐらいの理解で問題ありません!

ごまこ
ごまこ

何気なく使っていた変数や値に「型」があったなんて知らなかったです。
でも「型」という考え方を知っておく良いことがあるんですか?

ごまお
ごまお

良い質問ですね!
異なる型同士を扱う時には注意しないといけないことがあるんです!
一緒に学んでいきましょう!

異なる型同士は数値演算子が使えない

これまで数値の計算や文字列の連結といった記事で演算子(「+」や「*」)を使ってきましたが、基本的に異なる型同士の値や変数では演算子を使うことはできません。

以下のプログラムを実行するとエラーとなります。

# 文字列型(str型)と整数型(int型)の足し算
print("文字列" + 3)

"""
実行結果
-----------------------------------------
TypeError           Traceback (most recent call last)
Input In [7], in <cell line: 1>()
----> 1 print("文字列"+3)

TypeError: can only concatenate str (not "int") to str
"""

実行すると「TypeError」というエラーが出力されたと思います。

エラーの末尾には、
 TypeError: can only concatenate str (not "int") to str
翻訳すると
 「タイプ(型)エラー:str型へは("int型"ではなく)str型のみ連結できます。」
と表示されています。

このように異なる型同士を演算子で計算することはできないのです。

文字列型(str型)と小数型(float型)の場合も同様です。

# 文字列型(str型)と小数型(float型)の足し算
print("文字列" + 3.7)

"""
実行結果
-----------------------------------------
TypeError           Traceback (most recent call last)
Input In [10], in <cell line: 2>()
      1 # 文字列型(str型)と小数型(float型)の足し算
----> 2 print("文字列"+3.7)

TypeError: can only concatenate str (not "float") to str
"""
ごまこ
ごまこ

異なる型同士は計算できないんですね..
でも計算できる型はないんですか?

ごまお
ごまお

実はこれまで数値として扱ってきた「整数のint型」と「小数を含むfloat型」同士は計算できるんです!
他のプログラム言語ではできないものも多いけど、Pythonはこのあたりが柔軟なんです!

例外として、Pythonでは整数の「int型」と小数の「float型」を足すと、自動的に小数を含む「float型」に変換して計算します。

# 例外
# 整数型(int型)と小数型(float型)の足し算
print(2 + 3.7)

#計算結果は小数型(float型)となる
#実行結果 5.7

ここまでで、整数型(int型)と小数型(float型)は計算できますが、基本的には異なる型同士は演算子が使えないことがわかりました。

では、文字列と数値を連結したい場合にはどうすれば良いのでしょうか?

この時、用いるのが「型の変換」です。

型の変換

以下の例ではstr型(文字列)とint型(整数値)の変数を連結して「ごまこは3食、食べる!」とした変数を作ろうとしていますが、型の異なる値を連結しようとしているのでエラーとなります。

#int型の変数cnt
cnt = 3

#int型の変数cntと文字列を連結
eat_cnt = "ごまこは" + cnt + "食、食べる!"

"""
実行結果
-----------------------------------------
TypeError            Traceback (most recent call last)
Input In [28], in <cell line: 5>()
      2 cnt=3
      4 #int型の変数cntと文字列を連結
----> 5 eat_cnt="ごまこは"+cnt+"食、食べる!"

TypeError: can only concatenate str (not "int") to str
"""

Pythonでは他の型に値を型変換するための関数が用意されています。

文字列str型に変換する関数は「str()」、整数int型に変換する関数は「int()」、小数float型に変換する関数は「float()」となります。

関数名が型の名前と同じなので分かりやすいですね!

これらの関数のうち、str関数「str()」を用いて、int型の変数をstr型に変換すれば、さきほどのコードも実行できます。

#int型の変数cnt
cnt = 3

#int型の変数cntをstr型に変換して
#文字列同士で連結
eat_cnt = "ごまこは" + str(cnt) + "食、食べる!"

print(eat_cnt)

#実行結果 ごまこは3食、食べる!

「str(cnt)」の部分で変数cntに入っている整数値3は文字列の"3"に変換されています。

このため、文字列同士の連結となり意図通りに連結ができました!

ごまこ
ごまこ

型変換することで文字列として連結できました!

ごまお
ごまお

型の世界は奥が深いんです!
ベテランプログラマーもプログラムが複雑になると型の処理間違いをしてしまうんです!
次回も引き続き、型について勉強するからこの機会に基本を理解してほしいです!

まとめ

いかがでしたでしょうか。

今回は型の基本・型の変換について詳しく解説しました。

次回からもPython初心者に向けて、詳しく解説していきます。

お楽しみに!

このサイトの記事一覧へは以下へアクセス!

Python2年生 デスクトップアプリ開発のしくみ
初心者向け
ゴマフリーダムをフォローする

コメント

達人に学ぶDB設計 徹底指南書

最短コースでわかる ディープラーニングの数学

あたらしい機械学習の教科書 第3版

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

タイトルとURLをコピーしました