今回は個人的に1番使うと思っている整数型intについてやっていきます。(´∀`*)
Pythonにおけるintは”イミュータブル(immutable)な変数“です。
つまりオブジェクトの作成後、変更ができないということです。
ついでに、これと反対にオブジェクトの作成後も変更できる変数を”ミュータブル(mutable)な変数“、といいます。
変更ができるかどうかという点は変数では重要なポイントなので、初めて聞いたという方はこの際にぜひ覚えてください。(´▽`*)
またPythonのintの大きな特徴として、C言語などと異なり、格納できる値に制限がないという点があります。
どちらもサンプルプログラムしっかり確認していきましょう。
「えっ? 何言ってるの? intは変更できるでしょ? じゃないと計算できないでしょ?(・∀・)ニヤニヤ」
と思ったそこのあなた!!(`・д・´)Om
証拠をお見せしますね。
int_test.py
#!/usr/bin/env python
#cording:UTF-8a = 1024
print("a =", a)
a += 1
print("a =", a)
とプログラムすると、
console
a = 1024
a = 1025
と出力されます。
え? 出来てるじゃん? (・∀・)?
と思いましたか?
では、idを確認してみましょう。
immutable_int.py
#!/usr/bin/env python
#cording:UTF-8a = 1024
print("a =", a)
print("id(a) =", id(a))
a += 1
print("a =", a)
print("id(a) =", id(a))
とプログラムすると、
console
a = 1024
id(a) = 140321571109328
a = 1025
id(a) = 140321571109648
と、このように出力されます。
idが変わっているのがわかりますね。
つまりa += 1の処理ではaの値に1を足した別のintオブジェクトが作成されてaに新しく紐づけられているということになります。
次に、格納できる値を確認してみましょう。
例えば、符号なし2バイトのint型では表現できる値の範囲は0~65535、符号あり2バイトでは-32768~32767の範囲になります。
つまり、この範囲を超える整数はそのままでは扱えないということになります。
しかし、Pythonのintは特別な操作なく通常と同じように巨大な数を扱うことができます。
googol.py
#!/usr/bin/env python
#cording:UTF-8a = 10 ** 100
print("a =", a)
とプログラムすると、
console
a =10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
と出力されました。
無量大数(10の68乗?)よりも大きい1グーゴル(googol)でも問題ありませんでしたね。
さすがに1グーゴルプレックスはPCがかわいそうなのでやりませんが、プログラム的には問題なくできるはずです。(ΦωΦ)ニヤリ
さて、次は整数の指定方法です。
今まで使ったように10進数で示すのが一般的ですが、2進数、8進数、16進数での指定も可能です。
bin_oct_hex_int.py
#!/usr/bin/env python
#cording:UTF-8b = 0b1000000000
o = 0o2000
x = 0x400
print("b =", b)
print("o =", o)
print("x =", x)
とすると、
console
b = 1024
o = 1024
x = 1024
と出力されます。
2進数は変数bのように2進数の値10000000000の前に”0b“(数字の0と小文字または大文字のb)を書くことで指定できます。
8進数は変数oのように8進数の値2000の前に”0o“(数字の0と小文字または大文字のo)を書くことで指定できます。
16進数は変数xのように16進数の値400の前に”0x“(数字の0と小文字または大文字のx)を書くことで指定できます。
さて、今回はPythonでの整数型intについて説明しました。
大きな数の格納や、2進数、16進数での記述など、かなり自由に扱えそうですよね。
皆さんも色々試してみてください!(´▽`*)
カテゴリー:int, オブジェクト, 基礎文法