.net column
.NET開発者のためのブログメディア

[Python]変数と定数の違い|サンプルコードを見ながら実際に書いてみよう

 
[Python]変数と定数の違い|サンプルコードを見ながら実際に書いてみよう
SE
Pythonの変数と定数の違いって何ですか。
PM
Pythonでは、定数を言語としてサポートしていません。基本的には全て変数なのです。

定数とは?


初めに定数とは何か、そして、変数と定数の違いとは何かを見比べながら定数について学んでいきましょう。定数について理解ができたら、実際にコードを書いて実践してみてください。

変数って何?

プログラミング言語において、データを扱うメモリ領域(値を入れておく「箱」)のことです。

変数には「データ型」と呼ばれる型があり、その「データ型」と一致する値を格納できます。ただし、同じ変数が2つあるとプログラムエラーが発生するため、固有の名前をそれぞれに付ける必要があります。

なお、値については何度も書き換えることが可能です。

定数って何?

プログラミング言語において、値をいれておく「箱のひとつ」です。

変数同様、データを扱うメモリ領域を、必要に応じて利用できるようにするために、データに固有の名前を与えたものです。

ただし、変数とは異なり初期の値からの変更は不可能です。中身があまり変わらないと分かっているものは、変数ではなく定数にすると良いでしょう。

定数を扱うために必要な動きには、「初期化」と「参照」の2つがあります。

「初期化」では、これから使用する定数の名称と対応するデータを明確にします。定数は値が変更できないため、名称の明確化(宣言)と同時にデータを関連づける(代入する)ことになります。また、場合によっては定数も変数のようにデータ型を指定することもあります。

「参照」とは、初期化した定数を利用することです。定数は宣言時に必ず初期化しなければならないので、不正な値が使用されることはありません。

Pythonの定数

Pythonでは、定数を言語としてサポートしておらず、基本的には全て変数となります。しかし、変数や値を定数として宣言することはできないので気を付けましょう。

Pythonで定数を定義する時は、定数名を全て大文字で構成します。(PEP8標準)

ただし、このルールは、あくまで慣習的なルールのため、Pythonの定数では値を再度代入することが可能です。

また、Pythonでは厳密に定数を作成することが不可能なため、他人が書いたコードを変更する時は、定数の中身を書き換えないよう注意しましょう。

再度代入できてしまう例:

コードの解説としては、AD_MAIL定数に”admin@email.com”という値を代入し、その値を出力しています。そして、AD_MAIL定数に”admin@email.co.jp”という値を再代入し、その値を出力しています。実行結果のように、メールアドレスが再代入されています。

なお、どうしても定数を使用したい場合は、自分でも定数クラスを作れます。任意のファイル名(const.pyなど)で保存をし、モジュールとして読み込んでみましょう。

例:クラス定数

下記のように示します。

コードの解説としては、NameClassという名前のクラス名を作り、NAME定数に”aiko”という値を代入してその値を出力しています。

例:ファイル内定数

ファイル内定数の一例として記載します。

コードの解説としては、MIN_FILE_NUM定数に、5の値を代入してその値を出力しています。

命名ルール

Python(PEP8)における、命名のルールを挙げます。変数と定数の違いを見比べてみてください。なお、今回は対象が「変数」と「定数」のもののみ紹介します。

対象が「変数」のものは、ルールで〔全小文字、アンダースコア区切り〕でなければならないと決められています。例として、〔my_favorite_rule〕のように使用されます。

対象が「定数」のものは、ルールで〔全大文字、アンダースコア区切り、モジュールレベル(関数の外側)に書く〕でなければならないと決められています。例として、〔MY_FAVORITE_RULE〕のように使用されます。

Pythonの予約語一覧(python3.7.3現在)

Pyhtonの予約語は以下の通りです。

False
class
finally
is
return
None
continue
for
lambda
try
True
def
from
nonlocal
while
and
del
global
not
with
as
elif
if
or
yield
assert
else
import
pass
break
except
in
raise

実際に書いてみよう!

コードの解説をしましょう。

「COUNT = 5」で、定数を設定しています。上記で説明した通り、Pythonの定数は大文字で書いています。

「for i in range(COUNT):」で変数iを指定し、for文を使用して定数COUNTをループ処理しています。

「print(i)」では、変数iの値を出力しています。この時、変数iにはrange関数で設定していた範囲0~4が順番に出力されます。

mathライブラリの定数piの使い方

Pythonでπ(円周率)を使う方法を試してみます。mathモジュールのpi定数を使用することで、円周率πを参照できます。

まず、mathモジュールを入力します。

その後、

このコードの解説としては、π/5のサイン、コサイン、タンジェントを計算しています。

Pythonの定数モジュールをハードコーディングしないで使う方法

Pythonの定数モジュールをハードコーディングしないで使う方法を紹介します。では、記述していきましょう。

1つ目は、「eval」関数を使う方法です。

Pythonで定数を表すには、定数用のモジュールを作成し、それに定数を定義します。

しかし、都合により、この「ABC1」を使う時にハードコーディングしたくないとしましょう。

その時は、このように使用すれば上手くいきます。

以上、ハードコーディングしないで使う方法を紹介しました。

SE
実際にコードを書いてみるとよく分かりますね。
PM
ご紹介した方法を参考に、実際にコードを書きながら理解を深めてください。

まとめ

本記事では、変数と定数の違いを元にPythonの定数を知り、Pythonの定数を使用する際に必要なルールや、実際にどのように活用できるか紹介してきました。

Pythonの定数を知ることができたでしょうか。

本記事を参考に、例に挙げたような動作を実践してみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags