14: Pythonプログラミングの基本、変数とはなにか

前回の続きです。

変数とはなにか? を理解してデータを変数に代入できるようにする

続いて変数について見ていきたいと思います。

変数というのは一体何かというと、データに別名をつけて再利用できるようにしたものです。

そして変数を使うことによってコードを読みやすくすることができます。

イメージとしては、データを箱に入れて名前ラベルを貼ったものというイメージです。

例えば税率10%、つまり0.1という記述があったとします。

ただプログラム的には0.1と書かれていても何のことだかちょっと分かりませんよね。

ですから、箱を作り、この箱にラベルを付けます。

例えばtaxのような名前を付けると「これは税のことだな」とわかるようになります。

「データにtaxと言う名前を付けたもの」が変数です。Pythonではどう書くかというと、

tax = 0.1

上記の例は数学ではこのtaxと0.1が同じもの、と言う意味になりますが、プログラミングの世界では右辺の値を左辺に代入するというのがイコールの使い方です。

この変数というものは、プログラミングでは呼吸するぐらい頻繁に使います。ここでしっかり概念を身に付けてください。

変数に代入データを格納する方法ですが、先ほどもお話ししたようにイコールを使います。

a = 100

このようにコードを書いた場合は、aという変数に100が入ります。

変数に代入するにはこのようにイコールを使うということでした。

このプログラムを実行して結果を表示するためにはprint関数を使用します。

tax = 0.1
a = 100
print(tax)
print(a)

このようにプログラムを書くと、0.1や100と表示されます。

ちなみに、

print(tax, a)

print関数にカンマで複数の値を同時に出力することができます。

これもあわせて覚えておいてください。

ちなみに今黄色い波線が出ています。これは何かというと、Pythonの望ましい文法からちょっと外れてますよという警告です。

カンマの前にスペースが入ってますので、NGですねと言っています。

これを消すと、この警告が1個消えたんですが、次にカンマのところにカンマの後にスペースがありませんと言う警告が表示されます。

このようにPyCharmは望ましい書き方から外れると警告を出してくれます。

警告に従って書いているときれいなコードになりますので、警告が出たらなるべく直すようにしましょう。

と言っても、一個一個こんなふうに手作業で直すととても大変です。画面上のメニューから、「コードの整形」をクリックするときれいにコードをなおしてくれます。

Windowsも同様に画面上部の「コード」メニューから「コードの整形」を選択してください。

このコードの整形は、メニューから出してもいいのですが、ショートカットキーがあります。

Windowsの場合はCtrlとAltとLキー、Macの場合はCommandとOptionとLキーを押すことでコードを整形できます。こちらも合わせて覚えておきましょう。

なお、本シリーズではショートカットキー同時押しを+で表現していきます。上記の例の場合は Ctrl+Alt+L となります。

多重代入

変数に値を代入する方法ですが、多重代入というものもあります。

a, b = 10, 99

このように複数の変数と値をカンマで書くと、複数の変数に値を代入できます。

先の例ではaに10が、bに99が代入されます。

このプログラムを実行すると、10 20という値が結果として表示されます。

この多重代入は、今回のアプリ開発で使います。頭の片隅に入れておいてください。

この多重代入の右辺は、タプルと言います。

a, b = (10, 20)

このタプルは括弧でくくるのが、わかりやすい書き方です。こんなふうにタプルを展開して、それぞれの変数に格納するのがこの書き方です。

タプルについては後で詳しくお話しいたしますが、ここではこんなふうにカンマで区切ってこのように対応させると一気に変数に値を代入できると覚えておいてください。

次はエラーになるパターンを見ていきましょう。

c, d, e =(10, 20)

このように、左辺の変数の値と右辺のタプルの数があっていないと、警告が表示されたり、プログラムを実行するとエラーになります。

エラーメッセージは、

ValueError: not enough values to unpack(...

となっています。

unpackというのはこのpackingされたデータの塊の数が変数とあっていませんという意味です。

ですから、

c, d, e =(10, 20, 30)

このように変数の数と値の数をそろえると、プログラムを実行してもエラーはおきなくなります。

詳しくは後のレクチャーで触れますので、なんとなくこんな概念・機能があるのだな、と頭の片隅に入れておいてください。

変数名の付け方のルールを理解する

次は変数名のつけ方について解説いたします。変数名には推奨される名前、推奨されない名前があります。

推奨される名前の付け方

以前、推奨される名前として、変数名はスネークケースでつけましょうと解説しました。スネークケース覚えていますでしょうか?これは小文字英数字で単語間をアンダーバーでつなぐという記法です。

命名時は何をする変数なのか名前からわかるようなものが望ましいです。

プログラミングというのは、実際手に取って触れるようなものを扱うわけではありません。

言ってみれば概念を扱う技術ですから、名前からそれが何であるかわかるようにするというのはとても重要です。

変数名のつけ方、ちゃんとやろうとすると結構難しいんですが、方針として何をする変数名なのか名前からわかるようにするということは頭に入れておきましょう。そしてスネークケースで書くようにしましょう。

推奨されない名前の付け方

一方、推奨されない名前というものもあります。

  • 単語間をスペースで区切る
  • # から始まる
  • 予約語
  • 見分けがつきにくい文字
  • 英数字以外
  • _ から始まる名前
  • 演算子(+や-)から始まる名前

まず、単語間をスペースで区切ろうとするとエラーになります。また、使えないものとして # から始まるものは変数名にはできません。コメントになるからです。

それから、数字から始まる変数名は付けられません。

そして予約語というあらかじめPythonで確保されている名前は使用できません。例えばifとかforとかwhileなんていう言葉が予約語ですが、これは変数名にできません。

PyCharmでこういうifとかforを変数名として使おうとすると警告が出ます。

そして非推奨のものとして見分けがつきにくい文字1文字のみの変数「1文字変数」と言ったりしますが、見分けがつきにくい文字のみの名前、例えば小文字のl(エル)とか大文字のO(オー)、大文字のI(アイ)は数字の1とか0と見分けがつかないため非推奨です。

そして、英数字以外、例えば日本語の変数名は一般的ではありません。日本語変数名は使えると言えば使えるんですが、他の人が日本語変数名を見た場合、プログラミングが下手だと思われますので、避けるようにしましょう。

そして初心者のうちは _ (アンダーバー)から始まる変数名も避けておいた方がいいと思います。

使うことはできるのですが、アンダーバーで始まる変数名というのはPythonではちょっと特殊な意味を持っています。その意味が分かるまで避けていた方が無難です。

他には、変数名には演算子、例えば+(プラス)や-(マイナス)記号は使えません。

非推奨の文字は、PyCharmで警告が出ますので、すぐに気づくことができます。使えないものとか非推奨のものの警告がどんなふうかPyCharmで実際に確認してみます。

このように0から始まる変数名は既に赤い警告が出ています。変数の末尾に0をくっつけることは大丈夫ですが、0のように数字から始まるものはそもそも変数として設定できません。

次は予約語を見てみます。例えばifというものがあります。赤い波線が出ていますので変数としては使用できません。

forもだめです。

それから、withやwhileなど予約語はいくつもあります。使おうと思うと警告が出ますので、すぐに気づくことができます。

次は、見分けがつきにくい文字を変数として使用してみましょう。

変数 l (小文字のエル)。これは推奨されないものです。PyCharmの場合、使っているフォントで、lが小文字のエルと分かりやすい表記にはなりますが黄色い線が出て警告しています。

英語で書いてありますが、これを翻訳すると、こういう曖昧な変数名 l は使用できない、となっています。

l = “abc” の下に表示されているものは、Pythonはこうあるべきだ、ということが定められているPEP8というルールです。こういう文字は使わない方がいいよと言われているわけです。

ちなみに小文字のiであれば警告は出ません。あくまで見分けがつかない文字が警告が出るようになっています。この小文字のl(エル)、大文字のO(オー)、大文字のI(アイ)、このような変数名はだめですよと言うことですね。

その他、日本語の変数名も見てみます。

変数名なんていうふうにしても変数としては使えます。

例えばprint関数を使用して実行してもちゃんと使うことはできます。

しかし非ASCII文字として、警告が表示されます。ASCII文字というのは英数字のことです。

アンダーバーから始まる変数も初心者のうちは避けた方がいいです。

どのように特殊な意味を持つかというのは、本シリーズではこのアンダーバーを使ったコードは書かないため、本シリーズでは割愛いたします。しかし、意味を理解するまではこれは避けておいた方がいいと思います。

大文字小文字による変数の区別

変数名の大文字小文字は区別されます。

つまり、varとVARは違う変数になるということです。プログラムの実行結果も、それぞれ違う値が表示されています。それぞれ別の変数としてコンピュータに認識されています。

なお、Pythonではこの変数名の大文字小文字に限らず、全てのもの、例えば後で扱う関数なども大文字小文字が区別されます。この点は覚えておきましょう。

定数の使い方

次に定数というものを使って、変わることがない値を表現します。

そもそも定数というのは一体何かというと、頻繁に変わることがない値を表現する方法が定数です。例えば税率だったり会社名だったりというものが挙げられます。

他言語では定数を書き換えようとするとエラーになるものがあります。

しかし、Pythonではこのように他言語に見られる「定数を書き換えようとするとエラーになる」という機能はありません。

Pythonでいう定数は、単に大文字英数字とアンダーバーで記述された変数でしかないということです。

TAX_RATE = 0.1

税率は頻繁には変わらないので、大文字で表記します。実態は変数ですが、大文字で変数を定義すると、Pythonエンジニアのなかでは、大文字ではじまる変数は、定数であり、むやみに書き換えてはいけないという共通認識があります。

定数はUPPER_SNAKE_CASEという記法で書きます。UPPER_SNAKE_CASEは大文字と単語をアンダーバーで区切る書き方です。

以下のようにして表示させると 0.1 と表示されます。

TAX_RATE = 0.1
print(TAX_RATE)

この下に、以下のように追加のコードを書きます。

TAX_RATE = 0.1
print(TAX_RATE)
TAX_RATE = 0.2
print(TAX_RATE)

実行すると、値が再代入され0.2が表示されます。

ここまで解説してきたように、あまり書き換えない方が良い、というのがこの定数ですが書き換えできてしまいます。

本レクチャーの冒頭で解説したとおり、Pythonの定数はPythonエンジニアの共通認識になっているだけで強制ではありません。しかし、この共通認識には従っておきましょう。

以上、定数を使って変わることがない値を表現する方法でした。

これで変数についてのトピックはおしまいです。変数というのはプログラミングにおいては呼吸するのと同じぐらい使います。

今後のレクチャーの中で変数を頻繁に使いますので、あなたご自身で試行錯誤し頭にたたき込んでおいてください。