データには型というものがある、ということを、「データ型」の項目で紹介しました。
変数にデータを覚えておいてもらうとき、このデータ型を、(少しは)意識する必要があります。
今回は、変数の型について、学んでいきましょう。
Pythonにおける変数の型について
Pythonでないプログラミング言語の場合だと、最初に変数の型を決めてしまわなくてはいけないものもあります。
しかしPythonでは、変数にデータを覚えておいてもらったときや、変更されたときなどに、自動的に型が決まりますので、変数の型をあまり意識することなく、プログラミングを行なうことができます。
number = 123 # int型(数値)
string = 'abc' # str型(文字列)
ただ、まったく意識していないと、エラーが発生してしまったりするので、注意が必要です。
また、同じ変数でも、あとから別の型のデータを覚え直してもらったときは、型が変わります。
たとえば、変数a
に「123
」を覚えてもらったときa
はint型になりますが、そのあとに「'123'
」を覚え直してもらったときは、str型になります。
a = 123 # int型(数値)
a = '123' # str型(文字列)
変数の型を意識したいところ
Pythonでは、変数の型をそれほど意識しなくてもプログラミングができるのですが、まったく意識していないと、それが原因でバグが発生してしまうことがあります。
では、どういったところで、変数の型を意識すればいいのでしょうか。
1番多くであう意識したいところは、変数を使った計算(演算)のときだと思います。
演算については、もう少し先で学ぼうと思っているのですが、ここでちょっとだけ紹介します。
たとえば、int型のデータを代入した変数と、str型のデータを代入した変数を、足し算してしまうと、エラーになります。(足し算は、3行目のprint()
のなかで行なっています)
number = 111
string = '222'
print(number + string)
実行結果(エラー)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
上の例は、数値と文字列を足そうとしたためにおきたエラーです。
また、型が違うことで、不思議なことがおきてしまう場合があります。
たとえば、こんなふうにしてみたらどうでしょうか。
number = 111
is_cat = True
print(number + is_cat)
実行結果
112
上の例は、int型にbool型を足してみたものです。111
にTrue
を足すって、意味が分かりません。
しかし、おどろくことに、「112
」という結果になりました。
「はい」を表すはずのTrue
ですが、実は1と同じ意味を持っています。
また、「いいえ」を表すFalse
は、実は0と同じ意味を持っています。
なんだか分からなくなってしまいそうですが、これをちゃんと理解していると、のちのちプログラミングをしていく上で便利に使うことができるようになります。
しかし、これを知らないと、この不思議な動きに戸惑ってしまったり、バグが発生してしまったりすることも考えられます。
こういった、型の違いによっておこってしまうミスは、変数の名前をしっかりと考えることで防ぐことができます。