変数

2.2. 変数#

コンピューターでデータを解析するには、まずそのデータをプログラミング言語のルールに従って、適切な形式で入力する必要があります。また、解析の途中で必要なときにすぐ取り出せるように、データを保持しておくことも重要です。大規模なデータの場合は、ファイルとして保存し、そのファイルのパスをプログラムに読み込ませるのが一般的です。一方で、小さなデータや一時的に使用する値などであれば、プログラム内に直接記述しても問題ありません。

コンピューターに入力されたデータは、主にメモリーに保存されます。メモリーは通常、たくさんの小さな「区画」に分かれており、それぞれの区画には 0x2F6A のようなアドレスが割り当てられています。データが保存されるときは、これらの区画のどこかに収められます。小さなデータであれば 1 つの区画で足りますが、大きなデータは複数の区画にまたがって保存されます。私たち人間がメモリーの空き状況を確認し、アドレスを指定してデータを保存したり取り出したりするのは、現実的ではありません。そこで登場するのが、プログラミング言語が提供する変数variable)という仕組みです。

変数とは、データを保存するための仮想的な「箱」のようなものです。この箱にデータを入れる操作を代入assignment)といいます。Python では、変数にデータを代入するには = を使います。これは数学的な「等しい」を意味するのではなく、「右辺の値を左辺の変数に付与する」という意味を持ちます。

例えば、次のコードを見てみましょう。このコードは、数値データ 3.14p という名前の変数に代入しています。

p = 3.14

このプログラムを実行すると、Python は 3.14 という数値データをメモリの適切な場所に保存し、その場所に p という名前を付けます。言い換えれば、メモリ上に p という名前の「箱」が用意され、その中に 3.14 が入っている状態になります。このとき、箱の名前のことを変数と呼びます。一方で、箱の中に入っている 3.14 のようなデータそのものをオブジェクトobject)といいます。

一度データを変数に代入すれば、それ以降は p と書くだけで、Python が自動的に中身の 3.14 を取り出してくれます。私たちは、「メモリのどこに保存されているのか」や「いくつの区画を使っているのか」といったことを気にする必要はありません。これらの面倒な処理はすべて、Python インタプリタPython interpreter)が自動的に処理してくれます。

Python を使うのは、車を運転するようなものです。ハンドルを握ってブレーキを踏むだけです。エンジンの内部で何が起きているかなんて知らなくても、とりあえずコンビニでドーナツは買えます。むしろエンジンのことを考え始めると、ドーナツを買い忘れてしまいます。

なお、変数にデータを代入しただけでは、画面には何も表示されません。データはあくまでメモリに保存されているだけです。変数の中身を画面に表示したいときには、print 関数を使います。たとえば、変数 p に保存された値を出力するには次のように書きます。

print(p)
3.14

通常、画面は標準出力standard output)と呼ばれ、print 関数を使うと特別な設定がない限り標準出力に値が表示されます。これに対して、キーボードなどの入力デバイスは標準入力standard input)と呼ばれ、ユーザーから命令やデータを受け取るために使用されます。

なお、Jupyter Notebook を利用している場合は、print 関数を使わなくても、コードの最後に変数名を書くことで、その変数の中身が出力されます。ただし、この機能は Jupyter Notebook に特有のものであり、他の開発環境では同じように動作するとは限りません。

p
3.14