2章「コーディング規約」の対策ポイントと例題
2章「コーディング規約」からは本番40問中2問が出ます。PEP 8 の具体的な数値と、それを機械的にチェックするツールの役割分担を問う章です。
- PEP 8
- PEP 257
- flake8
- black
- isort
- docstring
この章の出題数と位置づけ
2章「コーディング規約」からは本番40問のうち2問が出題されます。 全体に占める割合は5.0%で、15章中6番目タイの出題数です(同じ2問の章が他に7章あります)。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の2問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- インデントは半角スペース4つ、1行は79文字、docstring とコメントは72文字。数値そのものが選択肢になります。
- 80文字ではなく79文字、という紛らわしい所が狙われます。black の既定は88文字ですが、これは PEP 8 の値ではありません。
- flake8 は指摘するだけ、black は書き換える、isort は import 順を直す、という役割の違いを区別します。
- docstring の書き方(PEP 257)と、命名規則(クラスは CapWords、関数・変数は snake_case、定数は大文字)も範囲です。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. PEP 8 が推奨するインデントはどれか。
- 正解半角スペース4つ
- タブ1つ
- 半角スペース2つ
- タブ4つ
解説: PEP 8 はインデントレベルごとに半角スペース4つを推奨。タブとスペースを、タブの幅によって段の深さが変わってしまう形で混ぜると、Python 3 では TabError になる。
例題2. PEP 8 が定める1行の最大文字数はどれか。
- 正解79文字
- 80文字
- 100文字
- 120文字
解説: コードは79文字、docstring とコメントは72文字が PEP 8 の上限。80文字の画面で、最後の1桁を折り返しの印のために空けておく値なので 79 になる。Black の既定の88文字のように、ツールの設定値は PEP 8 の値と別なので混同しないこと。
例題3. PEP 8 の命名規約として正しい組み合わせはどれか。
- 正解クラスは CapWords、関数と変数は lower_snake_case、定数は UPPER_SNAKE_CASE
- クラスは lower_snake_case、関数と変数は CapWords、定数は UPPER_SNAKE_CASE
- クラスも関数も CapWords、定数は lower_snake_case
- クラスも関数も定数も lower_snake_case で統一する
解説: クラスは CapWords(各単語の頭を大文字にして繋ぐ)、関数・変数・メソッドは小文字のスネークケース、定数はすべて大文字。モジュール名は短い小文字が推奨で、読みやすさのために必要ならアンダースコアを使ってよい。
この章は当サイトに全10問を収録しています。残りはドリルの「章別に解く」から解けます。