このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】変数と定数は名前で区別する

変数と定数は名前で区別する

 Pythonプログラミングにおいて、変数定数はデータを管理し、操作するための基本的な要素です。これらを効果的に区別し活用することで、コードの可読性や保守性が向上し、バグの発生を防ぐことができます。
 ここでは、変数と定数の違い、命名規則、PEP8に基づくベストプラクティスについて詳しく解説します。また、具体的なコード例を通じて、変数と定数をどのように名前で区別し、使用するかを学びます。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1. 識別子とは

 識別子とは、プログラム内で変数や関数、クラスなどに付ける名前のことを指します。Pythonでは、識別子として英字、数字、アンダースコア( _ )を使用できますが、以下のルールに従う必要があります。

識別子の命名規則

規則説明
使用可能な文字種アルファベット(大文字・小文字)、数字、アンダースコアのみ。variable1, total_sum
先頭文字数字で始めてはいけない。1variable は無効
大文字・小文字の区別Varvar は異なる識別子として扱われる。Countcount
意味のある名前変数の内容を理解しやすい名前を付ける。age, price, user_name
特殊文字の禁止空白や記号(@, #, $, など)は使用できない。user-name は無効
キーワードの禁止Pythonのキーワードと同じ名前は使用できない。for, if, class は無効

ポイント

  • 識別子はプログラムの可読性を高めるために、意味のある名前を付けることが推奨されます。
  • PEP8では、変数名と関数名には小文字とアンダースコアを用いたスネークケース(例:total_sum)を推奨しています。

2.変数の定義と使用

 変数は、データを保存し、後で参照するための名前付きの領域です。Pythonでは、変数を作成する際に型を明示的に指定する必要はなく、代入する値によって自動的に型が決まります。

変数への値の代入

 変数に値を代入するには、=(イコール)を使用します。=は代入演算子として機能し、右側の値を左側の変数に割り当てます。

【構文】

変数名 = 式

サンプルプログラム

# 整数を代入
number = 123
print(number)  # 出力: 123

# 文字列を代入
greeting = "こんにちは"
print(greeting)  # 出力: こんにちは

# 浮動小数点数を代入
pi = 3.14159
print(pi)  # 出力: 3.14159

実行結果

123
こんにちは
3.14159

ポイント

  • 変数名は意味のある名前を付けることで、コードの可読性が向上します。
  • PEP8に従い、=の両側に空白を1個ずつ入れることが推奨されています(例:number = 123)。

複数の変数への代入

 Pythonでは、複数の変数に対して同時に値を代入することができます。これにより、コードをより簡潔に記述できます。

同じ値を複数の変数に代入

サンプルプログラム

# 変数x、y、zに同じ値を代入
x = y = z = 50
print(x)  # 出力: 50
print(y)  # 出力: 50
print(z)  # 出力: 50

実行結果

50
50
50

異なる値を複数の変数に代入

サンプルプログラム

# 変数a、b、cに異なる値を代入
a, b, c = 10, 20.5, "Hello"
print(a)  # 出力: 10
print(b)  # 出力: 20.5
print(c)  # 出力: Hello

実行結果

10
20.5
Hello

ポイント

  • 複数の変数に同時に代入することで、コードが簡潔になります。
  • 変数と値の数は一致させる必要があります。

3.定数の取り扱い

 多くのプログラミング言語では、値を変更できない定数をサポートしていますが、Pythonには公式な定数の概念はありません。しかし、PEP8のガイドラインに従い、特定の命名規則を用いることで、定数として扱うべき変数を区別することが一般的です。

定数の命名規則

規則説明
英大文字の使用定数は英大文字を使用し、単語の区切りにアンダースコアを用いる。MAX_LENGTH, PI_VALUE
変更しないことの明示定数として扱う変数は、後から値を変更しないようにする(慣習)。MAX_LENGTH = 10000

サンプルプログラム

# 定数の定義
MAX_USERS = 100
PI_VALUE = 3.14159

print(MAX_USERS)  # 出力: 100
print(PI_VALUE)   # 出力: 3.14159

# 定数として定義した変数を変更(推奨されない)
MAX_USERS = 150
print(MAX_USERS)  # 出力: 150

実行結果

100
3.14159
150

注意点

  • Pythonでは、定数を変更することが可能ですが、定数として定義した変数は変更しないことが慣習となっています。
  • 定数の変更を防ぐために、コードレビューやテストで定数の再代入をチェックすることが推奨されます。

4.キーワードと識別子の制限

 Pythonには、キーワードと呼ばれる特別な意味を持つ識別子が存在します。これらのキーワードは、変数名や関数名として使用することができません。

Pythonのキーワード一覧(アルファベット順)

andasassertasyncawait
breakcaseclasscontinuedef
delelifelseexceptFalse
finallyforfromglobalif
importinislambdamatch
nonlocalnotorpassraise
returnTruetrywhilewith
yield

注意事項

1. バージョン依存性

 Pythonのキーワードはバージョンによって追加されることがあります。使用しているPythonのバージョンに応じて、キーワードの数や内容が異なる場合があります。

2. 識別子としての使用禁止

  キーワードはPythonの文法で特別な意味を持つため、変数名や関数名として使用することはできません。例えば、forifといったキーワードを変数名にすると、SyntaxErrorが発生します。

サンプルプログラム

for = 10  # SyntaxError: invalid syntax
if = "条件"  # SyntaxError: invalid syntax

実行結果

  Cell In[5], line 1
    for = 10  # SyntaxError: invalid syntax
        ^
SyntaxError: invalid syntax
3. 大文字と小文字の区別

  Pythonのキーワードはすべて小文字で定義されています。大文字と小文字は区別されるため、例えばTrueFalseはPythonのキーワードですが、TRUEFALSEはキーワードではなく、通常の識別子として扱われます。

サンプルプログラム

True # キーワード: 真を表す TRUE # 変数名として使用可能
TRUE = 10
4. PEP8による命名規則との関連

 PEP8では、変数名や関数名には小文字とアンダースコアを用いたスネークケース(例:total_sum)を推奨しています。一方、定数として扱うべき変数名にはすべて大文字とアンダースコアを用いることが推奨されています(例:MAX_LENGTH)。これにより、コードの可読性が向上し、変数と定数の区別が明確になります。

サンプルプログラム

# 変数
error_message = "ファイルが見つかりません。"

# 定数
MAX_RETRIES = 5

まとめ

ここでは、変数と定数を名前で区別する方法について学びました。

  • 識別子の命名規則:有効な識別子を作成するためのルールと、PEP8に基づく命名のベストプラクティスを理解しました。
  • 変数の定義と使用:変数に値を代入し、複数の変数に対して同時に値を代入する方法を学びました。
  • 定数の取り扱い:Pythonにおける定数の概念と、定数を識別するための命名規則を理解しました。
  • キーワードと識別子の制限:Pythonのキーワードを識別子として使用できないことを確認しました。

 これらの知識を基に、Pythonプログラム内で効果的に変数と定数を管理し、コードの可読性と保守性を高めることができます。次のコンテンツでは、不要な変数は削除するという概念について詳しく解説していきます。ぜひ、実際にコードを書きながら、変数と定数の使い分けを体験してみてください。