IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

ゼロから歩くPythonの道

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第58回 Pythonを使う時の変数名には、命名規則がある ~スタイル&PEP8編~ (菱沼佑香) 2024年12月

こんにちは、吉政創成 菱沼です。
今回も「きれいなPythonプログラミング(マイナビ出版)」という書籍を利用して学習します。

前回は、コードを自動で整形してくれるBlack様を実際に使ってみました。
今回から4章「わかりやすいネーミング」に入ります。この章では、変数の適切な名前の付け方を学びます。本稿では命名規則3種類と、PEP8 、定数について書いていきます。

Pythonの命名規則は3種類

Pythonで変数を使う際には名前をつけますよね。「sazae =」とか「isono =」とか。
変数に名前を付ける時には、基本的にわかりやすいものをつけることになると思いますが、この名前、結構悩みませんか?考えるのが面倒になって、ついつい安直に何の工夫もなく付ける私ですが、PEP8の中に変数にも命名規則に関する記述があるんだそうです。

まずは命名規則と種類について、テキストから引用します。

---------------------------------------------------------------
P.64
Pythonの識別子は大文字と小文字が区別され、空白を含むことができないため、プログラマーは複数の単語を含む識別子にいくつかのスタイルを使用しています。
(中略)
最も一般的なスタイルはsnake_caseとcamelCaseです。どちらを使っても構いませんが、どちらを使用するのかプロジェクトとして一貫性のあるものにしましょう。
---------------------------------------------------------------

引用文にあるsnake_caseやcamelCase。加えて、PascalCaseというものがあり、この3つが命名規則にあたるものだそうです。
本文に書かれていること+ちょっと調べて分かったことをそれぞれまとめたいと思います。

  • snake_case(スネークケース)
    PEP8で推奨されていることから、Pythonを使う方の中でよく利用されるのがこのsnake_caseだそうです。アンダースコア(_)を単語の間に挟んで表現します。小文字にする方が多いようですが、定数として書くときにはすべてを大文字で表現するようです。
    使用例)user_name、USER_NAME
  • camelCase(キャメルケース)
    始まりの文字を小文字、次の単語の先頭を大文字にして書かれるため、ラクダのこぶのように見えることから、キャメルケースと呼ばれるそうです。ローワーキャメルケース(LLC)と呼ぶこともあるようです。
    使用例)userName、storeDailySales
  • PascalCase(パスカルケース)
    全ての単語の頭文字を大文字にして書くもので、アッパーキャメルケース(UCC)とも呼ばれるようです。
    使用例)UserName、StoreDailySales
PEP8で書かれている命名規則のルール

ところで、上記で挙げた3つの命名規則の内、PEP8で推奨されているのはsnake_caseだということですが、実際にPEP8ではどのように書かれているのでしょうか。
PEP8の命名規則に関する推奨事項をテキストから引用します。

---------------------------------------------------------------
P.65

  • 文字はすべてASCII文字、つまりアルファベットの大文字と小文字を使用する。
  • モジュールの名前は、すべて小文字の短いものにする。
  • クラス名はパスカルケース(PascalCase)で書く。
  • 定数変数は、大文字のスネークケース(SNAKE_CASE)で書く。
  • メソッドの第1引数は、常にcls(小文字)とする。
  • クラスのprivate属性は、常にアンダースコア(_)で始める。
  • クラスのpublic属性は、アンダースコア(_)で始めない。

これらのルールは必要に応じて変更しても構いません。
---------------------------------------------------------------

PEP8の命名規則に関する原文はこちらからご確認いただけます。
https://peps.python.org/pep-0008/#naming-conventions
https://pep8-ja.readthedocs.io/ja/latest/#id23(日本語訳)

いろいろなサンプルコードの変数名を見ていると、大文字だったり小文字だったり、アンダースコアがあったりなかったりといろいろありましたが、こういった使い分けがされていたんですね。とはいえ、PEP8で書かれている表現が絶対という事ではないので、プロジェクトによっては使いやすい形でルールを決めて使われているんだろうと思います。

補足)定数と変数の違い

ところで、上記の中で定数変数ってなんだ?と思い調べてみました。
通常、変数は、値を一時的に入れておく箱になりますので、変数に入る値は変わります。一方、定数変数は、中に入っている値が一度設定されたら変わらない(固定されている)ものを指すそうです。
ただ、Pythonの場合、厳密な意味で定数はサポートされていないそうですで、仕組みとしては値が変わってしまうものではあるものの、大文字で書いておくことで「これは定数ですよ」と分かりやすく宣言しておくことを推奨されているそうです。
使い道としては、プログラムの中で変わらないものということになりますので、例えば税率などが定数変数として大文字で書いておくという感じになるようです。

それではきりが良いので、今回はこちらで終了です。今回もお付き合いいただきありがとうございました。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes