当コラムでは、PythonZen & PEP 8 検定試験(こちらでオンライン受験できます)で出題されている問題の解説を行なっています。当コラムシリーズを読んで自信がついたら、ぜひ試験に挑戦してみてくださいね。
今回のコラムで解説する試験問題はこちらです。
問題
PEP 8での二項演算子を含んだコードの改行方法が正しいものを、次の選択肢の中から選びなさい。
1.
income = (gross_wages +
taxable_interest +
(dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
2.
income = (gross_wages +
taxable_interest +
(dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
3.
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
4.
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
解答のヒント
PEP 8のコードレイアウトに関するガイドの中の、「二項演算子の前後のどちらで改行すべきか(Should a Line Break Before or After a Binary Operator?)」が問題になっています。
二項演算子とは、2つの数字や変数(→項)を元に1つの答えを求める記号など(→演算子)のことです。例えば「1 + 2」のプラス記号のように、2つの数を足し合わせる演算子があります。
では、ガイドラインを読んでいってみましょう。
For decades the recommended style was to break after binary operators. But this can hurt readability in two ways: the operators tend to get scattered across different columns on the screen, and each operator is moved away from its operand and onto the previous line.
長い間、二項演算子の後ろで改行するスタイルが推奨されてきましたが、この方法では読みにくくなってしまう理由が2つあります。
- 演算子の縦の位置が揃わずにバラバラになりやすい
- 計算対象の項が演算子から離れて、次の行に行ってしまう
Following the tradition from mathematics usually results in more readable code:
数学界の伝統に従えば、大抵はより読みやすいコードになります。
つまり、ガイドラインを参考にすればプログラム上の演算子の縦の位置が揃い、それぞれの演算子の計算対象となる項がどれになるのかが目で負いやすくなるということですね。
ガイドラインには具体的なサンプルコードも載っていますので、併せて確認しておきましょう。
正解はこちら
ガイドラインには、ルールとして従わなくてはいけないこと(must)、推奨されること(should)、各ルールの適用例・非適用例(cases)が書いてあります。ルールを機械的に覚えるだけではなく、なぜこのルールがあるのかを意識していくと、理解が深まりますね。
自信がついてきたら PythonZen & PEP 8 検定試験 で実際に試験を受けて、正解を当ててみましょう。
そして、みなさんのPython開発にも活かしていただけると嬉しいです。