Python 初心者がコードを綺麗に書くコツ

Python

概要

プログラミングを始めよう、となったときにまず最初にPythonに触れる方は多いと思います。

そんな初心者が指針もなく、いきなりPythonを書き始めるとコードがごちゃごちゃになってしまい、スパゲティコード(読みにくいコード)ができてしまいます。

そんなコードにならずに、綺麗なコードを書くための指針・コツを紹介します。

具体的には以下について紹介します。

  • PEP8 スタイルガイド
  • 静的解析ツール Flake8
  • Pythonic 思考

PEP8 スタイルガイド

プログラミング言語は基本的に文法が正しければ好きなように書けてしまいます。

一方で、その時の気分で書き方をコロコロと変えてしまうと、後で自分で読み返したときに非常に読みにくいコードが出来上がってしまいます。(例えば1週間前に書いた自分のコードを読み返してみることを想像してください。)

そうならないように、Pythonでは PEP8 という指針があり、コードはどのように書くべきである、ということがまとめられています。

PEP8 日本語訳のサイト
https://pep8-ja.readthedocs.io/ja/latest/


これに従って書くだけで、ある自分のコードが綺麗になり、一週間後の自分でも読みやすいコードが出来上がります。

例えば PEP8 では以下のような指針が定められています。

空白の使い方について

  • インデントにはタブではなく空白を用いる
  • インデントには4つの空白を用いる
  • 1行の長さは79文字以下とする
  • 関数・クラスは空白2行で分ける
  • など…

命名規則について

  • 関数・変数・属性は aa_bb_cc のように小文字でアンダースコアを挟む
  • モジュールの定数は AAA_BBB のように大文字でアンダースコアを挟む
  • クラスのインスタンスメソッドは第1パラメータの名前を self にする
  • クラスメソッドは第1パラメータの名前を cls にする
  • など…

式と文

  • 式の否定は not a is b ではなく a is not b を使う
  • リストが空であることの評価は len(somelist) を使わず not somelist を使う
  • if, for, while, expect の複合文を1行で書かずに複数行で書く
  • など…

その他

その他にもインポートに関するルールなど、たくさんの指針がPEP8にはまとまっています。

PEP8 日本語訳のサイト
https://pep8-ja.readthedocs.io/ja/latest/

これに従うことで、自然と綺麗なコードが書けるようになるでしょう。

静的解析ツール Flake8

Python には自分が書いたコードを自動的にチェックしてくれるツールがあります。

これは 静的解析ツール と呼ばれ、代表的なものに Flake8 というものがあります。

Flake8 は スタイルチェック・エラーチェック・複雑さチェック を全て行ってくれるツールであり、以下の様に使います。

$ flake8 test.py

この様に、コマンドラインで flake8 “チェックしたいPythonファイル” を打って実行するだけで解析が可能です。

flake8 がインストールされてない場合は以下のコマンドを打って flake8 をインストールしてください。

$ pip install flake8

試しに以下のPythonファイルに対してflake8を実行してみます。

a =  "aaa"

print(a,"bb")
$ flake8 test.py
test.py:1:4: E222 multiple spaces after operator
test.py:3:8: E231 missing whitespace after ','
test.py:3:14: W292 no newline at end of file

今回はflake8によって以下の指摘をされました。

  • オペレータ( = ) の後に複数スペースがある
  • コンマ( , ) の後にスペースが無い
  • ファイルの最後に空白行が無い

この様に flake8 ではファイルの読みにくさや文法をチェックして、結果を教えてくれます。

基本的に flake8 の指摘を全て解消すれば、読みやすいコードとなるでしょう。

Pythonic 思考

Python はシンプルに多くのことができるように設計されている言語であり、そのPythonの実力を最大限に活かすためのものとして、Pythonic思考 という考え方があります。

例えば Python には アンパック というシンプルで強力な仕組みがあります。アンパックとは以下のような代入を行える仕組みです。

# アンパックの例 (a と b にはそれぞれ 1 と 2 が代入される)
x = (1, 2)
a, b = x

# 上記をアンパックを使わずに書いた例
x = (1, 2)
a = x[0]
b = x[1]

この様にアンパックを活用することで、読みやすくかつ簡潔なコードが書けるようになります。

アンパックはPythonの仕組みでも氷山の一角であり、他にも数多くの便利で簡潔な仕組みがPythonにはあります。

このようにPythonの便利で簡潔な仕組みを最大限に活用して綺麗なコードを書こう、というのがPythonic思考です。

Pythonic思考のテクニックはこのブログで徐々に紹介していきますが、体系的に学ぶ方法として書籍を買って読むことを強くオススメします。

2020年9月の時点では以下の書籍がPythonic思考を学ぶためにとても有効です。

Effective Python – Pythonプログラムを改良する90項目
Fluent Python – Pythonicな思考とコーディング手法

これらの書籍はPythonic思考がよくまとまっていて、これを習得できればPythonを書くプログラマーとしてかなり優秀であると言えるでしょう。

コメント

タイトルとURLをコピーしました