Python 入門

Python 変数

変数は、データ値を格納するための「コンテナ(容器)」のようなものです。変数を使うことで、プログラムのあらゆる場所でそのデータを参照したり、操作したりすることが可能になります。

本章では、変数名の命名規則や慣習、代入(アサインメント)のプロセス、そして Python プログラムで変数を効率的に使用するためのベストプラクティスについて詳しく紹介します。

1. 変数の命名規則

変数には、内容を説明的(デスクリプティブ)かつ一貫したスタイルで命名することが、コードの可読性を高めるために不可欠です。Python において、変数の命名には必ず守らなければならない「硬性ルール」と、業界で広く認められている「慣習(コンベンション)」の2種類があります。

1.1 命名のルール(必須ルール)

以下のルールを守らない場合、Python インタプリタはエラー(SyntaxError)を出力します。

  • 必ず英文字 (a-z, A-Z) またはアンダースコア (_) で始める: 変数名を数字から始めることは絶対にできません。
  • 使用できるのは英数字とアンダースコアのみ: 最初の文字以降は、これらを自由に組み合わせることができます。
  • 大文字と小文字を区別する: myVariablemyvariableMyVariable は、Python ではすべて異なる変数として扱われます。
  • Python のキーワード(予約語)は使用できない: ifelseforwhiledefclassimportTrueFalseNone など、言語自体が使用する単語を変数名にすることはできません。

1.2 命名の慣習(強く推奨)

以下の慣習に従うことで、コードがよりクリアでプロフェッショナルなものになります。

  • 説明的な名称を使用する: 変数の用途や内容が明確にわかる名前を選びます。例えば、単なる sn よりも student_name の方がはるかに優れています。
  • スネークケース (snake_case) を使用する: これは Python で最も一般的かつ推奨される命名慣習です。単語の間をアンダースコアで区切ります(例:number_of_studentsuser_age)。
  • 小文字で始める: これは一般的な変数の共通ルールです。後に学習する「クラス (Class)」名は、通常大文字で始めます。
  • 一貫性を保つ: プロジェクト全体で同じ命名スタイルを維持してください。
  • 単一文字の変数名を避ける(特定の場合を除く): 技術的には可能ですが、ix といった名前は避けるべきです。ただし、ループカウンタとして使う場合や、非常に短くスコープの狭いコードブロックで意味が明白な場合は例外です。

1.3 有効・無効な変数名の例

視覚的に理解しやすいよう、有効な命名と無効な命名をまとめました。

変数名有効?理由・説明
my_variableはい完璧なスネークケースの命名です。
_internal_varはいアンダースコアで始めるのは有効です(通常、内部利用を意味します)。
studentNameはい有効(キャメルケース)ですが、Python ではスネークケースが推奨されます。
number1はい数字を含んでいますが、数字から始まっていないため有効です。
1st_variableいいえエラー:変数名を数字から始めることはできません。
my-variableいいえエラー:ハイフン(マイナス記号)は使用できません。減算演算と誤認されます。
forいいえエラー:for は Python の予約キーワードです。

コードデモ:

# 有効な変数名
my_variable = 10
_internal_variable = "これは内部値です"
studentName = "Alice"  # キャメルケースも可能ですが、非推奨です
StudentName = "Bob"    # パスカルケースも可能ですが、非推奨です
number1 = 123

# 無効な変数名(コメントを外すとエラーが発生します)
# 1st_variable = 5  # 数字から始めることはできません
# my-variable = 20  # ハイフンは許可されていません
# for = 10          # 'for' は予約キーワードです

2. 変数への代入

変数への代入とは、ある値を特定の変数名に関連付けるプロセスです。Python では、代入演算子 = を使用して値を割り当てます。

2.1 基本的な代入

構文は非常にシンプルです: 変数名 = 値

age = 30
name = "Charlie"
pi = 3.14159
is_student = True

これらの例では:

  • age に整数 30 が代入されました。
  • name に文字列 "Charlie" が代入されました。
  • pi に浮動小数点数 3.14159 が代入されました。
  • is_student にブール値 True が代入されました。

2.2 多重代入

Python では、複数の変数に同時に同じ値を代入することができます。

x = y = z = 0
print(x, y, z)  # 出力: 0 0 0

また、一行のコードで複数の異なる値をそれぞれの変数に代入することも可能です。

a, b, c = 1, 2, "hello"
print(a, b, c)  # 出力: 1 2 hello

重要: 多重代入を使用する際は、イコールの右側の値の数と、左側の変数の数が完全に一致していることを確認してください。一致しない場合、プログラムは ValueError(値エラー)をスローします。

2.3 再代入 (Re-assignment)

変数の値はいつでも変更可能です。

age = 25
print(age)  # 出力: 25

age = 26
print(age)  # 出力: 26

変数に再度値を代入すると、古い値は新しい値によって直接上書き(オーバーライト)されます。

2.4 代入とデータ型 (動的型付け)

Python は動的型付け (Dynamically typed) 言語です。これは、変数のデータ型を明示的に宣言する必要がないことを意味します。変数の型は、代入された値に基づいて自動的に推論されます。

my_variable = 10       # 現在は整数 (Integer)
my_variable = "Hello"  # 再代入後、現在は文字列 (String)
my_variable = 3.14     # 再代入後、現在は浮動小数点数 (Float)

一つの変数はあらゆる種類の値を保持でき、異なる型の値を代入するだけで、その変数が保持するデータの型を変更できます。

3. 変数活用のベストプラクティス

変数を効率的かつ規律を持って使用することで、コードの品質は大幅に向上します。

3.1 変数の初期化

変数を使用する前に初期化 (Initialization) するのは良い習慣です。これは、変数を最初に宣言する際に初期値を与えることを意味します。これによりエラーを防ぎ、プログラムのロジックが予測しやすくなります。

# 変数の初期化
name = ""
age = 0
total = 0.0
is_valid = False

3.2 「定数」の適切な使い方

Python 自体には、一度代入すると変更できない「定数(Constant)」という仕組みは組み込まれていません。しかし、業界には共通の慣習があります。定数として扱うべき変数は、すべて大文字で命名するというルールです。

PI = 3.14159
MAX_SIZE = 100

これはあくまで慣習であり、プログラム上で PIMAX_SIZE の値を書き換えることは可能です。しかし、すべて大文字にすることで、他の開発者(そして将来の自分)に対して「これらの値は固定パラメータであり、変更すべきではない」という強いシグナルを送ることができます。

3.3 変数の削除

del キーワードを使用すると、変数を削除できます。これにより、その変数はシステムメモリから完全に除去されます。

my_variable = 10
print(my_variable)  # 出力: 10

del my_variable
# print(my_variable)  # コメントを外すと、変数存在しないためエラー (NameError) が発生します

変数の削除は、巨大なデータ構造を扱っていてメモリを解放する必要がある場合に非常に便利です。ただし、削除した後にその変数にアクセスしようとするとエラーが発生するため、del の使用には注意が必要です。