WebエンジニアのLoL日記

LoLをプレイしたりLJLの試合を見たりするのが好きなエンジニア。LoLのイベントやパッチノートなど気になった点を記事にしたり、LJLについの記事をかいたりしています。某社でWeb系のエンジニアとして働いているので、技術系の記事もたまに書きます。コンタクトを取りたい場合はtwitterまで。

pythonのコーディング規約 pep8 を読んみる

もくじ

はじめに

最近pythonを書く機会がちょっとあり、pythonのコーディング規約ガイド pep8 を読んだほうがいいなーと思ったのでよみはじめています。

今回はインデントと空行のところを読んだので簡単に気になったところをまとめたいと思います。

参考

インデント

Pythonは他の多くの言語とは異なり、インデントの深さによってコードの解釈が変わる言語なので、インデントの規約は複雑です。

インデントにはスペース4つを使います。

def add_variables(value1, value2):
    return value1 + value2

引数などインデントで複数行に書く場合は開きカッコのレベルに揃えます。この場合、「インデントはスペース4つ」のルールには従わなくても構いません。

add_variables(value1,
              value2)

メソッド定義の引数と本体が区別しやすいように、引数部分にはインデントを加えます。

def add_variables(
        value1,
        value2):
    return value1 + value2

PEP8では以下のような1行に複数引数を書くような書き方も許容されています。 ただ、PHPのコーディング規約PSRではこれは認められていませんし、あまり見やすいものではなので、カンマごとに改行するのが良いでしょう。

def add_variables(value1, value2,
                  value3, value4):
    return value1 + value2 + value3 + value4

閉じカッコの前で改行することもできます。改行した場合のとじカッコのインデントのいちは以下のどちらかです。後者で書くパターンの言語が多いかと思います。

def add_variables(
        value1,
        value2
        ):
    return value1 + value2

def add_variables(
        value1,
        value2
    ):
    return value1 + value2

リストも同様です。

numbers = [
    1,
    2,
    3,
    ]

# または
numbers = [
    1,
    2,
    3,
]

空行

トップレベルの関数やクラスは2行の空行。クラス内の関数は1行の空行を挟む。

def add(value1, value2):
    return value1 + vaue2


def mult(value1, value2):  #空行2行
    return value1 * value2


class Square():
    
    def get_x(self):
        return self.x

    def get_y(self):
        return self.y


class Circle():

    def get_r(self):
        return self.r

    def get_x(self)
        return self.x

まとめ

pythonは空白に意味がある言語なので、インデントや空行の考え方は割と独特だと思いました。