eyecatch thumbnail

Python PEP8 コードのレイアウト

Profile picture
Takeru Yamada
2020.12.15

Contents


はじめに

どうも,たける@typememo です.

Python PEP8 コードのレイアウトについてです.


コードのレイアウト

インデント: 1レベルインデントにスペース4つ

個人的にはスペース2つが好き.

個人的には引数は一つずつ縦に並べるのが好き.

# 開き括弧に揃える
foo = long_function_name(var_one,
                         var_two,
                         var_three,
                         var_four)

# 引数とそれ以外を区別するため、スペースを4つ(インデントをさらに)加える
def long_function_name(
        var_one,
        var_two,
        var_three,
        var_four):
    print(var_one)

# 突き出しインデントはインデントのレベルを深くする
foo = long_function_name(
    var_one,
    var_two,
    var_three,
    var_four)

# if 文の後にコメントを追加する
if (this_is_one_thing and
    that_is_another_thing):
    # 両方の条件がtrueなので、処理を調整可能
    do_something()

my_list = [
    1, 2, 3,
    4, 5, 6,
]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)

タブか? スペースか? スペースを使え

Python2 のインタープリタに -t オプションをつけるとタブ文字があると警告してくれる.

さらに Python2 では -tt オプションをつけるとタブ文字があるとエラーになる.

Python2 使っている人はとにかく -t もしくは -tt オプション付けとけ.


1行の長さ: 最大79文字 or 最大72文字

最大79文字までに制限しろ.

docstring やコメントは最大72文字までに制限しろ.


2項演算子の前で改行しろ

2項演算子の前で改行せよ.

# 演算子と項を一致させやすい
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

空行

2行空けて定義するモノ: トップレベルの関数,クラス

1行空けて定義するモノ: クラス内部のメソッド

関数の中ではロジックの境目を表すために空行を控えめに使うと良い.


ソースファイルのエンコーディング: ASCII 一択

個人開発では utf-8 でも良いけど,非推奨.


import: 行を分けて import せよ

モジュールコメントや docstring の後に import 文を置け.

次の順番でグループ化し,グループの間は一行空けろ.

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

絶対 import しろ.

import os
import sys

from subprocess import Popen, PIPE

import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example

アンダースコア変数名は from future の後に置け

アンダースコア変数名は docstring の後, かつ from __future__ の後, 各 import の前に置け.

"""This is the example module.

This module does stuff.
"""

from __future__ import barry_as_FLUFL

__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'

import os
import sys

おわりに

親ページに戻る

最後までお読みいただきありがとうございました.


愛用品


関連記事