Pythonの定数を定義する方法!慣習とモジュールを活用した書き方
生徒
「Pythonの定数って、どうやって書くんですか?他の言語だとconstとか使いますよね?」
先生
「とてもいい疑問ですね。Pythonにはconstというキーワードはありませんが、定数として扱うための慣習やモジュールがあります。具体的に見ていきましょう。」
生徒
「わかりました!慣習とモジュールの両方について教えてください。」
先生
「では、まず慣習から見て、その後にconstモジュールの例も紹介しますね。」
1. Pythonでの定数の基本
Pythonには「絶対に変わらない値」を作るための専用キーワード(constなど)はありません。その代わりに、変数名をすべて大文字で書き、「これは定数として扱う値ですよ」ということを周りに伝える慣習があります。これはPythonを書く人同士で共有されている“暗黙のルール”のようなものです。
たとえば、次のように書くと「この値は途中で変更しない予定のもの」です、と示せます。
PI = 3.1415926535 # 円周率
MAX_USERS = 100 # 登録できる最大ユーザー数
このように大文字で書くことで、プログラムを読む人に「ここは重要な設定値だな」とひと目で分かってもらえるようになります。特に初心者のうちは、設定値や変えてほしくない値を大文字でまとめておくことで、コードの整理にもつながり理解しやすくなります。
2. Pythonで定数を作るときの注意点
Pythonには「定数」を強制する仕組みはありません。つまり、PIの値をあとで別の値に変えることもできます。これは「再代入できる」という意味です。たとえば次のように。
PI = 3.14
print(PI)
PI = 3.1415
print(PI)
出力結果は以下のようになります。
3.14
3.1415
このように書けてしまうのがPythonの特徴です。
3. なぜPythonには定数がないの?
Pythonの開発者たちは「コードを書く人が自由に決めていい」と考えています。そのため、強制的な定数はありません。代わりに、「定数として扱いたいものは大文字で書く」というお約束を守ります。
例えば、「学校の校則」と似ています。先生が「制服はこの色です」と言っても、必ず従わないといけないわけではないけれど、みんなが従うのが暗黙のルールです。
4. モジュールを活用して定数を管理しよう
定数をたくさん使うプログラムでは、専用のモジュール(ファイル)を作って、定数をまとめて管理すると便利です。たとえば、constants.pyというファイルに次のように書きます。
# constants.py
PI = 3.1415926535
MAX_USERS = 100
SITE_TITLE = "Python学習サイト"
そして、メインのプログラムファイルでこの定数モジュールを読み込みます。
import constants
print(constants.PI)
print(constants.MAX_USERS)
print(constants.SITE_TITLE)
出力結果は以下のようになります。
3.1415926535
100
Python学習サイト
このようにモジュールを分けると、プログラムがスッキリしますし、保守もしやすくなります。
5. 定数を変更されないように工夫しよう
Pythonでは、プログラム上で定数を書き換えることは技術的に可能です。でも、意図しない変更を避けたいときは、次のような方法があります。
例えば、クラスを使って定数を管理する方法です。
class _Const:
PI = 3.1415926535
MAX_USERS = 100
constants = _Const()
print(constants.PI)
print(constants.MAX_USERS)
このやり方だと、constants.PIの値を簡単に変更しにくくできます。厳密にロックはできないですが、コードを見た人に「これは定数です」とアピールできます。
6. 定数の便利な使い道を知ろう
定数を使うと、次のようなメリットがあります。
- プログラム全体の意味がわかりやすくなる
- 同じ値を何度も書かなくてすむ
- 修正が必要なときに、一か所だけ変えればいい
例えば、税率や最大人数、サイト名などは定数にしておくと便利です。
7. ポイント整理して覚えよう
Pythonの定数は、厳密には「変えられない値」という仕組みではありません。だけど、大文字で書いた変数や、モジュールを活用することで、定数として安全に管理できます。
「大文字で書いたら定数だよ」とチームのみんなに伝えることが大事です。そして、モジュールに分けることで、より見やすくなります。
まとめ
ここまで、Pythonで定数を扱うための慣習やモジュール分割の考え方、クラスを使った管理方法まで幅広く学んできました。Pythonは他の言語と違ってconstキーワードが存在しないため、どうやって「変えてはいけない値」を表現するのか最初は戸惑う人も多いですが、実際には慣習にもとづいて大文字で記述したり、専用のモジュールを作って管理したりすることで十分に安全で読みやすいコードを構築できます。とくに、複数のファイルにまたがって定数を利用する場面では、ひとつのモジュールに定数をまとめておくことが後々の保守性を高めるうえでとても効果的です。
また、クラスを活用した定数管理のように、少し工夫を加えることで定数を誤って変更してしまうリスクを下げる方法も存在します。大規模なプロジェクトでは、値の管理が曖昧だと後でバグの原因となることもあるため、自分たちの開発スタイルに合わせて最適な方法を選ぶことが重要です。大文字で名前を付けるという単純なルールから、モジュール化、クラス化と段階的に工夫を重ねることで、Pythonでも十分に整理された定数管理が実現できます。
さらに、税率や設定値、サイト名、ステータスなど、アプリケーションのあらゆる場所で利用する値を定数化しておくと、変更が必要になった際も一箇所を変えるだけで済むため、保守の手間を大きく減らせます。特にチーム開発においては、値の意味を共有しやすくなるというメリットも大きく、コードの読み手が「これは変わらない値なんだな」と直感的に理解できるようになります。こうした小さな積み重ねが、結果的に品質の高いコードへとつながっていきます。
以下に、今回学んだ内容をまとめつつ、実際の定数モジュールと利用例をひとつにまとめたサンプルコードを掲載します。実務でもそのまま応用できる形になっているので、ぜひ手を動かしながら理解を深めてみてください。
総まとめサンプルコード
# constants.py
PI = 3.1415926535
MAX_LOGIN_COUNT = 5
SITE_TITLE = "学習用Pythonサイト"
# main.py
import constants
def show_info():
print("円周率:", constants.PI)
print("最大ログイン回数:", constants.MAX_LOGIN_COUNT)
print("サイト名:", constants.SITE_TITLE)
def update_try(value):
# 万が一変更されたとしても警告を出す例
if value > constants.MAX_LOGIN_COUNT:
print("警告:定数を超えた値が設定されています")
show_info()
update_try(10)
このように、値をひとまとめにして別モジュールから参照することで、定数の意味が明確になり、コード全体の構造も自然と読みやすくなります。大文字で書くという慣習も、見た瞬間に「変わらない値」という印象を与えてくれるため、Pythonにおける定数管理の基本として広く浸透しています。定数管理の工夫は、プロジェクトの規模が大きくなるほど効果が表れますので、小さなプログラムを書く段階から意識しておくと後々役に立つ場面が必ず出てきます。
生徒
「Pythonには定数がないって聞いて不安でしたけれど、実際にはいろいろな方法で管理できるんですね!」
先生
「そうですね。仕組みとして強制はできませんが、慣習や工夫を使えば十分に定数らしく扱えますよ。」
生徒
「モジュールに分けたり、大文字で書いたりするだけで意味がはっきりして、コードがすごく読みやすくなると感じました。」
先生
「その通りです。ほかの人が読んでも意味が伝わるというのは、とても大切なポイントなんです。」
生徒
「クラスを使って管理する方法も意外でした。いろいろな形があるんですね。」
先生
「状況に応じて使い分けると、より安全でメンテナンスもしやすいコードになりますよ。」
生徒
「次の開発では、定数をきちんと整理して使ってみます!」
先生
「素晴らしい心がけです。ぜひ実践してみてくださいね。」