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 文を置け.
次の順番でグループ化し,グループの間は一行空けろ.
- 標準ライブラリ
- サードパーティに関連するもの
- ローカルな アプリケーション/ライブラリ に特有のもの
絶対 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
おわりに
最後までお読みいただきありがとうございました.
愛用品
- Xiser Pro Trainer (ステッパー)
- HHKB Professional 墨 (キーボード)
- HHKB キートップセット 白 (キートップ)
- Apple Magic Mouse 2 (マウス)
- Apple MacMini (PC)
- iiyama Display 27inch FullHD (ディスプレイ)
- KINTO UNITEA 550ml (コップ)