プログラムを書く上で変数は必須のものだ。変数を使うことのメリットや、その定義方法、名前を付ける際に気を付けるべきことなどを見ていこう。
* 本稿は2019年4月12日に公開された記事を、Python 3.11.5で動作確認したものです(確認日:2023年9月11日)。
前回は整数、浮動小数点数(実数)、算術演算子など、Pythonで扱える数値の基本について見た。今回は、「変数」を中心に以下の要素について見ていこう。変数は、数値などのデータを取っておき、後からその値を利用できるようにするための仕組みで、プログラムを書く上では欠かすことができないものだ。
変数の話に入る前に、変数を使わずにちょっとした計算をしてみよう。ここでは半径1の円の円周の長さと面積を求めてみる。円周率は3.14とする。すると、円周と面積を求めるコードは次のようになる。
print(2 * 3.14 * 1)
print(3.14 * 1 * 1)
実行結果は次のようになる。
短いコードではあるが、円周率と半径の値を何度も入力していることに気付くはずだ。このことには幾つかの問題がある。
まず、3.14を何度も入力していると、どこかで3.15と間違えて入力してしまう可能性がある。また、精度を少し高くして3.14159にしたくなるかもしれない。そのたびに、円周率を書いている全ての部分を直すのは面倒くさい。
さらに、他の人がこのコードを見たときに、計算式の中で使われている数値の意味が分からない可能性もある。後からプログラムを見直したときに、3.14の代わりに「PI」のような「3.14を意味する名前」が使われていれば、すぐにその値の意味が分かるようになる。
あるいは複雑な計算をしたいときに、一度計算した結果を保存しておいて、別の計算式でそれを利用したいといったこともある。そのような場合に、コンピュータの世界では「変数」が使える。
「変数」とは読んで字のごとく、「変化する数」を取っておくためのものだ。ただし、変化しなければならないわけではない。また「数」とはいっているが、文字列など数値以外のものでも取っておける。Pythonでは数値や文字列は「オブジェクト」であると前回少し話をしたが、これらのオブジェクトを取っておくのに使うのが変数だと考えればよい。
変数はよく「値を入れる箱」や「値に付けた名前(ラベル)」のようなものとして表現される。例えば、以下は「1」という値を「r」という名前の変数に保存しているところだ。
変数のよいところは、「値に名前を付け」「その値を取っておき」「後から名前を介してその値を利用できる」ことだ。例えば、円周率を「PI」という名前の変数(定数)に、半径を「r」という名前の変数に保存しておくとしよう。すると、上で見た計算式は次のように書き換えられる。なお、以下では「半径×半径」の計算に累乗演算子「**」を使っている(累乗を行う「**」演算子の方が乗算を行う「*」演算子よりも優先順位が高いので、この式では「r ** 2」の計算の方が先に行われ、その結果と変数PIの値の乗算が行われる)。
PI = 3.14
r = 1
print(2 * PI * r)
print(PI * r ** 2)
以下に実行結果を示す。もちろん、結果は最初に示したものと変わらない。
それでは、このコードを基にPythonの変数について見ていこう。
上のコードで行っている「PI = 3.14」や「r = 1」など、「変数を作成する」ことを「変数の定義」と呼ぶ。変数は定義した後でないと、その値を使うことはできないことには注意しよう。
Pythonで変数を定義するには、「変数名 = その値」という「文」を書く(代入文)。これにより、その変数が作成され、「その値」が変数に「代入」される*1。変数を定義して、その最初の値を代入することを「変数の初期化」ということもある。
*1 これを「変数が値に束縛される」と表現することもある。変数は何かのオブジェクトを参照するものだと考えると(上で見た「変数をラベルとして表現」した図を参照)、その関連付けのことを「束縛」と呼ぶ。
「=」記号は、その左側(左辺)に置いた変数に、その右側(右辺)の値を代入する操作を行うための「代入演算子」だ。
変数を定義した後は、プログラムコード中にその変数を書くと、その場所にその変数の値が書かれたものとして扱われる。これを「変数の値を参照する」と表現することもある。
このように、変数を使えば後から円周率を3.14159にしたくなったときでも、「3.14」を何度も「3.14159」に書き直すのではなく、「PI = 3.14」という行を「PI = 3.14159」にするだけで済む(半径を変更したくなったときも同様)。
先ほど「変数は定義した後でないと、その値を使うことはできない」と述べたが、実際にこれを試してみよう。以下のコードをセルに入力して、実行してみよう。
print(undefinedvariable)
実行すると、次のようになる。
セルの下に「エラーメッセージ」が表示された。これはプログラムの実行に問題があったことを示すものだ。メッセージをよく読むと「NameError」とあり、さらに「undefinedvariableという名前が定義されていない」と書いてある。未定義の変数を使おうとしたので、このようなエラーが発生したということだ(Pythonではこれらを「例外」と呼ぶ)。
Copyright© Digital Advantage Corp. All Rights Reserved.