2. 変数#
2.1. 基本#
代入文を書くと変数が作成され、その変数に値がセットされる。C言語とは異なり、変数の宣言時に型を指定しなくてもよい(Pythonは動的型付け言語である)。
x = 3
このように作成された変数は、Pythonのインタプリタが終了するまで保持される。変数の値を確認するには、その変数を評価させればよい。
x
3
変数の型はtype関数で確認できる。整数はint型で表現される。
type(x)
int
\(x \leftarrow x + 1\)といった変数の値の更新にも、代入演算子=
が使える。
x = x + 1
x
4
上の更新処理は次のように書くこともできる(+=
演算子はC言語にもあるが、C言語の++
演算子に相当するものはない)。
x += 1
x
5
同様に、-=
, *=
, /=
という演算子が用意されている。なお、以下のコードでは変数の値の更新と、更新後の変数の評価(表示)を一つのセルで行っている。
x -= 2
x
3
x *= 2
x
6
x /= 3
x
2.0
浮動小数点型の変数を作成するには、値を小数点付きで表現すればよい。
x = 1.5
x
1.5
浮動少数点数はfloat型で表現される。
type(x)
float
浮動小数点型から整数型に変換するには、int関数を用いる。以下の例ではx
の値が切り捨てられる。
int(x)
1
整数型から浮動小数点型に変換するには、float関数を用いる。
float(2)
2.0
変数(オブジェクト)の削除はdel文で行う。ただ、Pythonでは使わなくなったメモリ領域は自動的に開放される(ガーベージコレクション)ため、明示的にdel文で変数を削除することは稀である。
del x
変数x
を削除すると、評価できなくなる。
x
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/tmp/ipykernel_206365/32546335.py in <module>
----> 1 x
NameError: name 'x' is not defined
2.2. 変数の再評価#
\(x = 1\)として\(y \leftarrow x^2 + 2x + 1\)を計算してみる。
x = 1.
y = x ** 2 + 2 * x + 1
y
4.0
変数x
の値を2
に変更してからy
を評価しても、変数y
の値は再計算されない(元の値から変化しない)。
x = 2
y
4.0
再計算をするには、変数y
の代入文を再度実行する必要がある。
y = x ** 2 + 2 * x + 1
y
9
2.3. 複数の変数への代入#
一行で複数の変数にまとめて値を代入できる(厳密には後で説明するタプル型を介した代入である)。
x, y = 3, 1
x
3
y
1
変数の値の入れ替えも簡単に書ける(一時的な変数を使わずに書ける)。
x, y = y, x
x
1
y
3
2.4. 変数の型アノテーション (Python 3.6以降)#
Pythonでは型を指定して変数を作成することはできないが、変数の型の説明(型アノテーションや型ヒントと呼ばれる)を付けることができる。Pythonに入門したての頃は型アノテーションを使いこなす必要はないが、型アノテーションを使った変数を見ても驚かないように、例を示しておく。
以下は変数x
はint型であると説明しながら、1
を代入する例である。
x: int = 1
以下は変数x
はint型であると説明しておきながら、浮動小数点数である1.0
を代入する例である。これは型アノテーションと変数の型が一致していない悪い例である。
x: int = 1.
実際に、変数x
の型を調べてみると、int型ではなくfloat型となっている。
type(x)
float
このように、型アノテーションは変数の型を強制するものではないが、ソースコードの可読性の向上、エディタの自動補完機能、型チェックなどに用いられる。