Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
生徒
「Pythonで数字や名前を固定して使いたいときって、どうすればいいんですか?定数ってあるんですか?」
先生
「いい質問ですね。Pythonには“定数”専用の文法はありませんが、定数っぽく扱う方法があります。命名のルールや注意点を学べば、ちゃんと定数として使えますよ!」
生徒
「そうなんですね!他の言語みたいに、constとかfinalとかはないんですか?」
先生
「その通り、Pythonには書き換え禁止にする機能はありません。でも、大文字で書くことで“これは変更しない値ですよ”という合図になります。では詳しく見ていきましょう!」
1. Pythonにおける定数とは?
Pythonには、他のプログラミング言語にあるような「絶対に変更できない定数」を作るための専用構文は用意されていません。 そのためPythonでは、文法で制限するのではなく、開発者同士の共通ルールとして「この値は変更しない」と決めて使うのが基本的な考え方になります。 これが、Pythonにおける定数の特徴です。
具体的には、変数名をすべて大文字で書くことで、「この変数は定数として扱うものですよ」という意思表示をします。 プログラムを読む人が見ただけで用途を理解できるため、初心者の方でもコードの意味を追いやすくなります。
# 円周率を定数として定義
PI = 3.14159
# 最大人数を表す定数
MAX_USERS = 100
# アプリ名を表す定数
APP_NAME = "MyApp"
このように定義された値は、計算や表示などで何度も使われることが多く、 毎回数値や文字列を直接書くよりも、意味が分かりやすくなります。 「途中で値が変わらない前提のデータ」は、定数としてまとめておくと、 プログラム全体の見通しが良くなり、ミスの防止にもつながります。
2. 定数の命名ルール(スタイル)
Pythonでは、定数として使う値はすべて大文字で書き、単語の区切りにはアンダースコア(_)を使うのが一般的です。 これはPythonのスタイルガイドであるPEP8に沿った書き方で、「ここは変えない前提の値です」と読み手に伝える役割があります。 変数名の付け方が整っていると、コードを見返したときに意味がすぐ分かり、チーム開発でも混乱が減ります。
たとえば「最大サイズ」「初期色」「あいさつ文」のように、用途がはっきり分かる名前にしておくと便利です。 逆に、短すぎる名前や意味があいまいな名前にすると、後から見たときに何の値か分からなくなりがちです。
MAX_SIZEDEFAULT_COLORWELCOME_MESSAGE
初心者の方でも試しやすいように、定数らしい名前を付けた簡単な例を見てみましょう。
# 画面に表示するタイトル(変えない前提の文字)
APP_TITLE = "かんたん家計メモ"
# 消費税率(変えない前提の数値)
TAX_RATE = 0.1
# 1日に入力できる回数の上限
MAX_INPUT_COUNT = 5
print(APP_TITLE)
print(TAX_RATE)
print(MAX_INPUT_COUNT)
このように大文字とアンダースコアで統一しておくと、「定数として扱う値」がひと目で分かります。 名前だけで役割が伝わるので、Pythonの辞書やリスト、関数と組み合わせて使うときも読みやすいコードになります。
3. 定数も実は書き換えできてしまう?
残念ながら、Pythonでは定数として扱っているつもりの値でも、普通の変数と同じように上書きできてしまいます。 つまり「大文字で書いたから変更できない」という仕組みではなく、あくまで見た目で分かる目印に近いものです。 そのため、うっかり代入してしまうと、気づかないうちに動きが変わってしまうことがあります。
たとえば、円周率のように本来は変えないはずの値を途中で書き換えると、計算結果が変わってしまい、 バグの原因になります。まずは「Pythonの定数は守る約束ごと」という点を押さえておきましょう。
PI = 3.14159
print("最初のPI:", PI)
# ここでうっかり上書きすると…
PI = 3
print("上書き後のPI:", PI)
# PIを使う計算も結果が変わってしまう
radius = 2
area = PI * radius * radius
print("半径2の円の面積:", area)
最初のPI: 3.14159
上書き後のPI: 3
半径2の円の面積: 12
この例では、PIを上書きしたことで面積の計算結果も変わっています。 だからこそ、定数らしい名前(大文字)を見かけたら、途中で代入しないことが大切です。 Pythonでは定数を守るのは開発者のマナーなので、書き換えない意識を持って使いましょう。
4. 定数を使うメリット
定数を使うことで次のような良い点があります:
- コードが読みやすくなる
- 意味が明確になる(例:
TAX_RATE = 0.1) - 同じ値を何度も使うときに間違いが減る
- 途中で変更する必要があっても、1カ所直せば済む
5. 定数をグループでまとめる方法(補足)
定数がたくさんある場合は、専用のファイル(たとえばsettings.py)を作ってそこにまとめるのもおすすめです。
# settings.py
APP_TITLE = "スプラ学習アプリ"
VERSION = "1.0.0"
MAX_SCORE = 9999
他のファイルからは次のように使えます。
import settings
print(settings.APP_TITLE)
6. Pythonでも定数を厳密に守る方法はある?
Pythonでも「本当に変更できないようにしたい!」という場合は、typing.Finalを使う方法もあります(Python3.8以降)。
from typing import Final
PI: Final = 3.14159
PI = 3 # これはmypyなどでエラーになります
Python本体は何も言いませんが、mypyでチェックすれば変更を防げます。
まとめ
Pythonで定数を扱うときに意識したいのは、「Pythonには定数という仕組みが存在しない」という点と、それでも開発の中で値を固定して扱いたい場面が多く存在するという現実です。この記事で学んできたように、Pythonでは大文字で変数名を書くことで「この値は変えません」という意思を読み手に示します。これは長年のPython文化として定着しており、実務でも広く使われています。
Pythonのコードは柔軟性が高く、変数を書き換えることも簡単にできてしまいます。そのため、定数として扱いたい値を書き換えないように気を付けるのは、開発者自身の判断とマナーに委ねられています。定数を使う目的はただの「固定値」としてではなく、コードの意味を明確にし、読みやすくし、ミスを防ぐためにあります。たとえば、単なる数字では意味が伝わりにくい値でも、TAX_RATEやMAX_USERSという名前がついていれば、それが何を表すか一目で理解できます。
また、複数の場所で同じ値を使う場合には定数としてまとめておくことで、後から変更が必要になったときに一箇所修正するだけで済みます。これにより、管理しやすいコードになり、複雑なプログラムでも整合性を保ちやすくなります。特にプロジェクトが大きくなるほど、こうした整理された書き方は品質を保つために大きく役立ちます。
Pythonでは、定数を専用のファイルにまとめて管理する方法もよく使われています。たとえばsettings.pyやconfig.pyなどにまとめておくと、複数ファイルで共有しやすく、プログラムの構成も分かりやすくなります。扱う値が増えてきた場合は、早い段階でこうした構造を導入すると、後々コードの整理がとても楽になります。
さらに厳密さが求められる場合には、typing.Finalを使用して「これは絶対に変更してはいけない値」という意図を明確に示す方法もあります。mypyなどの型チェックツールを併用すれば、誤って書き換えてしまった場合に警告が出るため、チーム開発でも安心して扱えます。
定数の扱いをより理解するサンプルコード
定数を整理して使うときのイメージがつきやすいように、シンプルなサンプルを掲載します。
# 定数ファイル constants.py として定義する例
APP_TITLE = "サンプル学習アプリ"
DEFAULT_LANGUAGE = "日本語"
MAX_LOGIN_COUNT = 5
# メインファイル
import constants
print(constants.APP_TITLE)
print("使用言語:", constants.DEFAULT_LANGUAGE)
print("最大ログイン回数:", constants.MAX_LOGIN_COUNT)
このように、定数をまとめて管理することでコードの見通しが良くなり、どの値が固定で使われているのかがはっきりします。さらに、機能追加や修正の際にも、定数ファイルを見れば値の一覧が確認できるため、効率良く作業を進められます。シンプルな作業でも、こうした整理された書き方を心がけることで、結果的に保守性の高いプログラムに仕上がります。
今回の記事で学んだ内容は、Python初心者がつまずきやすいポイントでありながら、長く使い続ける基礎となる考え方です。定数を正しく扱い、コードに意味をもたせる習慣を早い段階で身につけることで、その後の学習や実務にも大きな効果を発揮します。大文字の変数名を見るだけで「これは固定値だ」と理解できるようになれば、コードの読み方も一段階深まります。
プログラム全体の品質を向上させるためにも、定数の使い方を意識しながら実際に手を動かし、さまざまな値を扱ってみてください。コードを読みやすくし、間違いを防ぎ、変更に強い構造にするための第一歩が「定数の理解と活用」です。シンプルですが、とても大切な知識なので、ぜひ実際のコードで使ってみましょう。
生徒
「Pythonには定数がないって聞いて驚いたけど、大文字で書けば定数っぽく扱えるんですね!」
先生
「そうですね。Pythonは柔軟な言語なので仕組み自体はありませんが、読みやすさのために大文字で統一する文化があるんですよ。」
生徒
「定数をまとめてファイルにする例も分かりやすかったです。プロジェクトで管理しやすそう。」
先生
「その気づきはとても大切です。値が増えるときほど整理と統一が役立ちますからね。」
生徒
「typing.Finalもすごく便利そう…。厳密に守りたいときに使ってみます!」
先生
「ぜひ活用してください。今回学んだことは、Pythonを扱ううえでしっかり役立つ知識になりますよ。」