Python PEP8 #1

株式会社リュディアです。今回は Python のコーディングスタイルガイドの1つ PEP8 についてまとめてみます。

Python コーディングスタイルガイドとして有名なものに今回まとめる PEP8 と、Google が提案している Google Python Style Guide の 2 つがあります。それぞれ提案元へのリンクをつけておきます。PEP8 は日本語訳へのリンクをつけています。

まず PEP8 は絶対的なものではなくプロジェクトで推奨されている規約に従うべきとあります。あくまで新規でコーディングする際の参考という位置づけです。ただ Python は可読性重視の言語なので何らかのコーディングルールを意識しながらプログラミングすることは重要だと思います。原文の冒頭にもあるように、プログラミングではコーディングしている時間より他人の書いたコードを読む時間の方が長い、その際に共通ルールがあった方が読みやすいということを理解することが重要です。まさにその通りだと思います。

PEP8のすべての項目を知りたい場合はリンク先を見てください。本まとめでは私どもが普段のコーディングで意識していることだけをまとめていますのでご了承ください。では早速みていきましょう。

1 行の長さ

1行あたりの文字数を最大79文字までに制限します。コーディングで使うエディタに1行の文字数を設定しておくとよいですね。またスペースの入れ方のところでも出てきますが行末に無用なスペースを入れないようにします。

インデント

1 レベルインデントするごとにスペースを4つ使います。タブは使わずにスペースのみを使います。複数行を継続したいときにインデントする場合はスペースを 4 にする必要はありません。これもコーディングで使うエディタでタブを入力すると 4 つのスペースに置換されるように設定しておいてください。

複数行を継続したいときにスペースが 4 つでなくてよいに関する例を以下につけておきます。

foo = long_function_Name(
  var_one, var_two,
  var_three, var_four)

関数を呼び出すときに関数名が長く、引数も多い場合には複数行にまたがるような記述をします。1行あたりの文字数制限 79 文字を意識するとよく出会う状況です。この例では2行目以下はスペース 2 つとしています。スペース 4 つのルールはあくまで制御構造を示す際の基準であって、制御構造を示さないインデントはスペース 4つかどうか気にしなくてもよい、ということを言っています。

空行

インデントを無しで書くクラスや関数に関しては2行の空行を入れます。インデントがある場所に関数を定義する場合は1行の空行を入れます。以下、例を示します。最初にインデント無しで定義するクラスや関数を定義する例です。

class sample_class():
    pass


def sample_function():
    pass

このように 2 行の空行を入れます。次にインデントがある場所に関数を定義する場合の例です。クラス内でメソッドを定義しています。

class sample_class():

    def __init__(self):
        pass

class 定義の行と def __init__(self) の間に 1行の空行がありますね。

import の場所と順序

import 文は常にファイルの先頭に配置し、通常は import するモジュールごとに行をわけます。また import する順番は以下のように行います。

1. 標準ライブラリ
2. サードパーティに関連するもの
3. ローカルなアプリケーション / ライブラリに特有のもの

また上の 1 ~ 3 のグループの境界には 1 行の空行をいれます。

PEP8に関するまとめの続きは以下からどうぞ。

では、ごきげんよう。




この記事が気に入ったらサポートをしてみませんか?