こんにちは。
いつも C# で開発することが多いのですが、最近 Python に触れる機会がありました。
C# 感覚でコーディングをした後に、改めてPythonのコーディング規約であるPEP8で確認したところ、変数宣言など地味なところで命名規則に違いがありましたので、ざっくりC#とPythonの命名規則をまとめてみました。
なおPEP8では、以下のようにプロジェクトのコーディング規約を衝突する場合は、プロジェクトをコーディング規約を優先するようにと書かれています。
多くのプロジェクトには、自分たちのコーディングスタイルに関するガイドラインがあります。それとこの文書の規約の内容が矛盾した場合は、そのプロジェクトのガイドラインが優先します。
#はじめに
はじめに命名規則の簡単な説明です。
命名規則 | 説明 | 例 |
---|---|---|
キャメルケース(CamelCase) | 先頭以外は単語の先頭を大文字にする。 | happyNewYear |
パスカルケース(PascalCase) | 先頭含めは単語の先頭を大文字にする。 | HappyNewYear |
スネークケース(SnakeCase) | すべて単語は小文字。アンダースコアでつなぐ。 | happy_new_year |
コンスタントケース(ConstantCase) | すべて単語は大文字。アンダースコアでつなぐ。 | HAPPY_NEW_YEAR |
※パスカルケースは、アッパーキャメルケースとも呼ばれます。 | ||
※コンスタントケースは、アッパースネークケースとも呼ばれます。 | ||
※PEP8では、CapWords形式と表現されてますが、Pascal形式との違いが分からなかったので、以下ではPascal形式として整理しています。 |
#命名規則の比較一覧
C#とPythonの命名規則を簡単にまとめた比較一覧です。
識別子 | C# | Python |
---|---|---|
パッケージ(名前空間) | PascalCase | すべて小文字 |
HappyBirthday | happybirthday | |
モジュール | PascalCase | すべて小文字 / SnakeCase |
HappyBirthday | happybirthday / happy_birthday | |
クラス | PascalCase | PascalCase |
HappyBirthday | HappyBirthday | |
型変数 | PascalCase | PascalCase |
HappyBirthday | HappyBirthday | |
例外 | PascalCase | PascalCase |
HappyBirthdayException | HappyBirthdayError | |
グローバル変数 | Pascal | SnakeCase |
HappyBirthday | happy_birthday | |
パラメータ(引数) | CamelCase | SnakeCase |
happyBirthday | happy_birthday | |
メソッド(関数) | PascalCase | SnakeCase |
GetHappyBirthday | get_happy_birthday | |
変数 | CamelCase | SnakeCase |
happyBirthday | happy_birthday | |
定数 | PascalCase | ConstantCase |
HappyBirthday | HAPPY_BIRTHDAY |
その他にPEP8にも書かれているインデントやコメント、IFなどの制御文にクラス定義やメソッド定義などの記述の違いについては、別の機会にまとめていこうと思います。
参考)
Python コードのスタイルガイド(PEP8)