PEP8の命名規則や文字数、改行について

はじめに
Pythonの標準ライブラリやPythonのコードを書く人はPEP8を守っています。しかしながら絶対に守らなければならないというものではありません。現場ごとに独自のルールがある場合はそれに従うべきでしょう。PEP8は利用者の決まりごと。コーディング規約であり、守らなければ文法エラーになるわけではありません。いかに見やすく読みやすくするかを考えられたものだと解釈するのが良いでしょう。そんなPythonのコーディング規約のPEP8について以下の規約に絞ってお伝えしていきます。
- 命名規則
- 文字数
- 改行
PEP8の命名規則
- パッケージの名前
- アンダースコア「_」は使わない
- すべて小文字の短い名前
- モジュールの名前
- アンダースコア「_」で区切っても良い
- すべて小文字の短い名前
- クラスの名前
- CapWords方式(単語の頭文字を大文字にして連結)
- 型変数の名前
- CapWords方式(単語の頭文字を大文字にして連結)
- 短い名前
- 例外の名前
- クラスの命名規則に従う
- 名前の最後に「Error」をつける
- グローバル変数の名前
- モジュール内のみで使用する場合は先頭にアンダースコア「_」をつけ非公開にする
- 関数の名前
- 小文字のみ
- アンダースコア「_」で区切っても良い
- 変数の名前
- 小文字のみ
- アンダースコア「_」で区切っても良い
- 関数やメソッドに渡す引数の名前
- インスタンスメソッドのはじめの引数は「self」
- クラスメソッドのはじめの引数は「cls」
- 関数の引数と予約語が被った場合、関数の引数の最後にアンダースコア「_」を追加
- メソッドの名前
- 関数の命名規則に従う
- 小文字のみ
- アンダースコア「_」で区切っても良い
- インスタンス変数の名前
- 関数の命名規則に従う
- 小文字のみ
- アンダースコア「_」で区切っても良い
- 定数の名前
- すべて大文字
- アンダースコア「_」で区切る
以上がPEP8の命名規則になります。続いては文字数についてです。
PEP8の文字数
結論からお伝えすると、PEP8では1行における文字数は79文字以内と定められています。これは単純にそれ以上長い文字数を1行に書いてしまうと非常に読み難くなるからということがあります。また、エディタを使用する際に1行を80文字で折り返して表示すること避けるために79文字に設定しています。エディタによっては折り返さないものもあったりしますが、その場合は横長に非常に長いコードとなり、これまた読み難くなります。1行は79文字以内に収めるようにしましょう。
コメントなどのテキストブロックに関しては1行72文字以内に収めるようにしましょう。
シングルクォーテーションとダブルクォーテーション
文字数とは異なりますが文字に関連することにクォーテーションがあります。PEP8ではクォーテーションはシングルクォーテーション「’」でもダブルクォーテーション「”」でもどちらでもOKとしていますが、当然ながらどちらを使用するかは統一しましょう。
インデント
インデントはPEP8ではtabは使わず半角スペース4文字と定めています。私はPythonとは別の言語ではtabを使っていたのでそちらに慣れていましたが、現場によっては半角スペースを利用することもあり煩わしさを感じていました。またtabを使用すると、PCの環境によってスペース2文字で表示される場合や4文字で表示される場合とまちまちなため統一性がなくなります。しかし、PEP8のようにインデントは半角スペース4文字と定められていれば統一性があり、インデントで悩む必要もなくなります。ただしそれも現場によるので現場に従ったインデントの規則でコーディングしましょう。
PEP8の改行
以前は二項演算子の後に改行をすることが推奨されていましたが、現在は数学的観点から二項演算子の前で改行することを推奨しています。 以下は二項演算子の後に改行している例です。
income = (gross_wages +
taxable_interest +
(dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
こちらは二項演算子の前に改行している例です。
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
どちらのほうが見やすいか一目瞭然ではないでしょうか。行数が増えれば尚更見やすさ、読みやすさが変わってくるでしょう。
空行
空行の改行数もPEP8では定められています。関数やクラスを定義する際は2行ずつ空け、クラス内のメソッドを定義する際は1行ずつ空けるようにします。
import文
import文も改行して記述するべきと定められています。
import os
import sys
このように1行で書かず、改行してimport文を明記します。
おわりに
以上がPythonのコーディング規約、PEP8の命名規則や文字数、改行についてでした。PEP8にはその他にもコーディング規約があります。詳しくはこちらを参照してみてください。