3月からPythonZen & PEP 8 検定試験が始まりましたね。こちらからオンラインで受験することができます。当コラムでは、こちらの試験問題の解説を行なっていきます。このコラムを読んで、ぜひ試験に挑戦してみてください。
今回の試験問題はこちらです。
問題
PEP 8に即していないインデントの使い方をしているコードを、次の選択肢の中から選びなさい。
- 引数が一行で収まらない場合は、第一引数の開始位置に揃える。
foo = long_function_name(var_one,
var_two,
var_three,
var_four)
- 引数が一行で収まらない場合は、二行目から始めてインデントをつける。
foo = long_function_name(
var_one,
var_two,
var_three,
var_four)
- 引数が一行で収まらない場合は、二行目からインデントをつける。
foo = long_function_name(var_one,
var_two,
var_three,
var_four)
- def文の場合は、引数と関数処理を区別させるために、引数のインデントをさらに追加する。
def long_function_name(
var_one,
var_two,
var_three,
var_four):
print(var_one)
解答のヒント
PEP 8のインデント(Indentation)に関する問題になっています。
選択肢1について
インデントについて、Indentation に次のようなコードサンプルがあります。
# Aligned with opening delimiter.
foo = long_function_name(var_one, var_two,
var_three, var_four)
選択肢2について
インデントについて、Indentation に次のようなコードサンプルがあります。Hanging indent
についてはこちらに注釈が書かれています。
# Hanging indents should add a level.
foo = long_function_name(
var_one, var_two,
var_three, var_four)
選択肢3について
インデントについて、Indentation に次のようなコードサンプルがあります。Arguments on first line forbidden when...
に注目してください。
# Arguments on first line forbidden when not using vertical alignment.
foo = long_function_name(var_one, var_two,
var_three, var_four)
選択肢4について
インデントについて、Indentation に次のようなコードサンプルがあります。
# Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
正解はこちら
いかがでしたか。PEP 8の公式ガイドラインには、さまざまなケースに対応できるようなガイドラインが書かれています。上記の解答のヒントで参照している箇所を読めば、今回の問題もサラッと解けてしまうと思います。
正解は、PythonZen & PEP 8 検定試験で実際に試験を受けて確認してみてください。
そして、実際のPython開発にも活かしていただけると嬉しいです。