Python

Pythonのコーディングのルール【PEP8についてまとめ】

Python

Pythonスクリプトを作成し始めてから、半年くらいになりますがここで一度Pythonをコーディングする際に守るべき記載ルールであるPEP8について確認の意味も含めてまとめておきたいと思います。

PEP8(Style Guide for Python Code)は Python の標準ライブラリに含まれているPythonコードのコーディング規約です。規約に従うことで誰が書いたコードでも書き方が統一されてすっきりです。

はじめに — pep8-ja 1.0 ドキュメント

なお、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プロフェッショナル大全

今回は以上となります。

コメント