Pythonスクリプトを作成し始めてから、半年くらいになりますがここで一度Pythonをコーディングする際に守るべき記載ルールであるPEP8について確認の意味も含めてまとめておきたいと思います。
PEP8(Style Guide for Python Code)は Python の標準ライブラリに含まれているPythonコードのコーディング規約です。規約に従うことで誰が書いたコードでも書き方が統一されてすっきりです。
なお、PEP8の最初に書かれている言葉として「一貫性にこだわりすぎるのは、狭い心の現れである」がありますのでそれを頭に置いたうえでルールを守ります。
レイアウトに関するルール
- インデントはスペース4つ
- 1行の長さは最大79文字まで、長くなったらバックスラッシュとかで改行すべし
- トップレベルの関数やクラスは、2行ずつ空けて、クラス内部では、1行ずつ空けてメソッドを定義すべし
- コードは常に UTF-8(Python 2 では ASCII) を使用すべし
- import文は行を分けるべき( 1行でimport sys, os, timeとかはNG)
__all__
,__author__
,__version__
のような、モジュールレベルの “二重アンダースコア変数” (変数名の前後にアンダースコアが2つ付いている変数) は、モジュールに関する docstring の後、そしてfrom __future__
以外の あらゆるimport文の前に置くべき- 式や文中の空白文字に余計な空白文字を使うのはやめるべき
レイアウトに関するルールをまとめるとこんな感じです。スペースや空白文字はPyCharmでフォーマットするようにすれば問題ないと思います。
PyCharmについてはこちらで紹介しています。
命名規則
プログラミングにおいて複数単語に対する記載方法としては幾つか種類があります。メジャーなものとしては、アッパーキャメル記法、ローワーキャメル記法とスネーク記法、ケバブ記法という4種類の記載方法があります。
それぞれの記載方法は以下になります。
説明 | 書き方(例) | |
アッパーキャメル記法 | 単語の先頭をすべて大文字でつなぐ | AutoComplete |
ローワーキャメル記法 | 先頭の単語だけ小文字、次からの単語は大文字でつなぐ | autoComplete |
スネーク記法 | 単語の間をアンダーバーでつなぐ ※大文字の場合はアッパースネーク記法 | auto_complete |
ケバブ記法 | 単語の間をハイフンでつなぐ | auto-complete |
Pythonの命名規則については以下となります。基本的にはスネーク記法でクラス名だけアッパーキャメル記法になります。
対象 | ルール | 記法 |
パッケージとモジュール名 | 全て小文字の短い名前、アンダースコア | スネーク記法 |
クラス名 | CapWordsを使うべき | アッパーキャメル記法 |
関数名 | 小文字+アンダースコア | スネーク記法 |
メソッド名とインスタンス変数名 | 小文字+アンダースコア | スネーク記法 |
定数 | 全ての定数は大文字+アンダースコア | アッパースネーク記法 |
その他の細かいルールは以下です。
- インスタンスメソッドのはじめの引数の名前は常に
self
を使うべき - クラスメソッドのはじめの引数の名前は常に
cls
を使うべき - すべての公開されているモジュールや関数、クラス、メソッドの docstring を書くべき
- モジュールレベルの変数や、クラス変数、インスタンス変数、そしてローカル変数に対するアノテーションは、コロンの後にひとつスペースを入れるべき
まとめ
今回はPythonのコーディング規約であるPEP8についてまとめてみました。
特に複数人で開発する際にはコーディング規約は重要になりますので忘れないようにしたいですね。
Pythonのオススメ勉強方法
私がオススメするPython初心者向けの最初に購入すべき書籍は「シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全」です。
シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全
この書籍は実際にシリコンバレーの一流エンジニアとして活躍している酒井潤さんが書いた本です。
内容も初心者から上級者までまとめられており、各Lessonも長すぎずに分かりやすくまとめられているので、初心者の方にもおすすめです。
シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全
今回は以上となります。
コメント