Python PEP8 #2
株式会社リュディアです。Python のコーディングスタイルガイドの1つ PEP8 について引き続きまとめていきます。前回までの PEP8 のまとめへのリンクは以下を参考にしてください。
PEP8 の日本語訳へのリンクはこちらです。
今回はいろいろと意見がありそうな命名規則についてです。昔からいろいろな命名規則が提案されています。古いものだとハンガリアン記法が有名です。Wikipedia のハンガリアン記法へのリンクを以下につけておきますので興味のある方は参考にしてください。
まず最初に重要なこととして Python では変数名、関数名、クラス名などに使える文字の制限があります。使ってよいのは以下の3種類のみです。
英語アルファベットの大文字、小文字
アンダースコア
数字、ただし先頭での使用は禁止
では PEP8 の命名規則について見ていきます。
パッケージ名、モジュール名
すべて小文字で表現しアンダースコアの使用は推奨されません。アンダースコアを使わなくてよいような短い名前にすべきです。例えば find index という名前を付けたければ findindex となります。
クラス名
CapWords方式で記述します。CapWords方式とは何でしょうか?結論から書くと先頭文字を大文字にしたキャメルケースです。ではキャメルケースとは何でしょうか?単語の区切りを大文字にしてつなげる表記方法です。例えば find index というクラスを定義する場合は以下のようにクラス名を定義します。
FindIndex
先頭が大文字かつ単語の区切りとなる I も大文字になっています。アンダースコアは使わないでください。
関数名や変数名
小文字のみで単語間をアンダースコアで区切ります。例えば find index というインデクスを見つける関数を定義する場合は find_index() となります。クラス内で定義されるメソッドやクラス変数も同様の規則に従います。
定数名
すべて大文字で単語をアンダースコアで区切ります。前と同じ find index を例にすると FIND_INDEX となります。
例外
例外はクラスであるべきなのでクラスの命名規約を適用します。例外の名前の最後に "Error" をつけるべきです 。
公開されていない変数名、関数名
モジュールやクラスが持つ内部でのみ利用する要素の先頭にはアンダースコアをつけます。Python では厳密には private と呼ばれるスコープは存在しないのですが、クラスを設計する際にクラス外から参照しないようにという意思表明 (?) のために使うのがよいと思います。C++が出てきた時代から使われている命名規則のように思います。
ここまでが PEP8 の命名規則に関するまとめですが、他の方の Python のコードを見ているとハンガリアン記法に準じているものも多いように思います。ハンガリアン記法と PEP8 は両立するので問題ないです。例えばリスト型の変数名の先頭には l_ をつける、タプル型の変数名の先頭には t_ をつけるといった具合です。こちらも参考として紹介しておきます。
PEP8に関するまとめの続きは以下からどうぞ。
では、ごきげんよう。