投資のためのデータサイエンス

個人の投資活動に役立つデータ分析にまつわる話題を綴ります。

Pythonコーディング特集

本ブログの最近の投稿記事で、PythonのコーディングのTips(コツ)に関する記事をいくつか紹介した。これらに限らずPythonのコーディングに関する記事は数多く、本ブログの記事ストックにも多くたまっている。そこで今回はそれらの記事のリンクを記述するのではなく、内容を要約して紹介することとした。
Pythonのコーディングの改善に関してはさまざまな記事で述べられているが、それらはおおよそ「コーディング規約」「コメントの工夫」「ワンライナー」「静的タイピング(型づけ)」に集約できる。

コーディング規約 (特にPEP8)
〔主なポイント〕
・PEP8はPython標準ライブラリのための規約であり、最優先に守るべきものとは限らない
・インデントは(タブでなく)半角スペース4つ
・括弧(開き)の直後に改行する場合は次の行はインデント一つ分後ろにずらす
・関数の引数が多いために改行を入れる場合は次の行はインデント二つ分後ろにずらす
・コードの一行は半角で79文字以内(改行が入れやすいものは半角72文字以内)
・演算式が複数行にまたがる場合、プラスなどの記号は先頭に配置する
・import文は一行にひとつだけ記述する
・キーワード引数や引数のデフォルト値指定ではイコール前後に空白を入れない(アノテーションもある場合は空白を使う)
・リストの末尾にコンマを入れてもよい(改行が伴う場合)
・関数名や変数名は小文字のみで単語間をアンダースコアで区切る
・モジュールやクラスが持つプライベート的な要素の先頭にアンダースコアを入れる
予約語と被る変数名は末尾にアンダースコアを入れる
〔関連するコツ〕
・変数や関数名はx1やvar123のような無意味なものでなく、内容がわかる名づけ方をする

コメントの工夫
・コメントは要領よく簡潔に。少なすぎも多すぎもよくない
・処理部分を書く前にコメントを書く
・関数等のDocstringを活用する(VScode利用時は特に便利なツールが使える)

ワンライナー
複数行のコードを一行で記述する「ワンライナー」は、可読性を損ねることなくコードを簡潔にしてかつ効率を高めるコーディング方法として推奨している記事が多い。主なワンライナーは以下の通り
(a) 多重代入文

a, b, c = 123, 456, 789

(b) if条件文の書き方

if 8 < x < 12:

(c) 条件分岐を1行で表す

y = 'Success!' if x < 11 else 'Failure!'

静的タイピング(型づけ)
Pythonが現場のシステム構築で使いにくい最大の理由として、変数の型が代入時に決まる「動的型づけ言語」であるために、特に大規模で複雑なコードの保守がしにくいことが挙げられている。その対応策として「静的タイピング」化がある。これは完全に静的型づけ化するものではないが、型指定をチェックするライブラリであるmypyが利用できるなどにより保守が容易になる。静的タイピングにもいろいろあるが、主なものは以下の通りである
(a) 変数のアノテーション

name: str = "山田 太郎"

(b) 関数のアノテーション

def square(x: int) -> int:
    return x * x