Python学習編11回目です。
前回は東京大学のPython学習ページで3-1. 辞書 (dictionary)を学びました。今回は3-2. 繰り返し(前半)。
今回は比較的サクサク問題を解けたのでPEP8について聞いてみた。
入力:
PEP8の観点から、以下のコード1(自分が書いたコード)とコード2(教材の解答例)のどちらが良いか比較してください
出力:PEP8(Python Enhancement Proposal 8)はPythonのコードを書く際のスタイルガイドです。このガイドは可読性を高めることを目的としています。以下の点から、コード1とコード2を比較してみましょう。
インデント
- コード1では、関数内のインデントが2スペースになっています。
- コード2では、インデントが4スペースになっており、PEP8に準拠しています。
コメント
- コード2には処理を説明するコメントがありますが、PEP8ではコメントを使ってコードの意図を説明することを推奨しています。ただし、コメントは英語で書くことが一般的です。
変数名
- 両方のコードで使用されている変数名は短く、一貫性がありますが、より具体的な名前を使用することでコードの可読性をさらに高めることができます。例えば、
list1
,list2
,list3
よりも、matrix1
,matrix2
,result_matrix
のように、内容をより明確に示す名前を選ぶべきです。
関数のドキュメンテーション
- どちらのコードにも関数のドキュメンテーションがありません。PEP8では、関数定義の直下にドキュメンテーション文字列(docstring)を記述して、関数の目的や引数、返り値について説明することを推奨しています。
その他の観点
- コード2は、加算を行う行で直接
list3[i][j]
に結果を代入しています。これはより簡潔で、Pythonicなアプローチです。 - コード1では、
print(list3)
が関数の中に含まれていますが、関数の副作用として出力を行うのではなく、関数から結果を返して外部で出力する方が望ましいです。
結論
- コード2がPEP8の観点から見て優れていますが、インデントが4スペースである点、コメントの追加がある点でPEP8によりよく準拠しています。ただし、改善の余地はまだあり、特に変数名の命名規則や関数のドキュメンテーションの追加が挙げられます。
いろいろあるけど、今すぐ使えそうなのはコメントと関数のドキュメンテーション。練習問題解くだけなら可読性はそんなにいらないけど、GPTと会話するためには身につけねばならないんだろうな。Python語という非母国語を扱うから自然言語で逐語訳せよってことだろう。このときの自然言語に英語が推奨されているから、日本語話者にとっては第二外国語を第一外国語で学んでるような感じになるのか。難しい。
次回に続く