Pythonコードを黒で自動フォーマットする方法

Pythonコードを書くことと、適切な形式でコードを書くことは別のことです。ジュニアプログラマーは、コードが機能していることを確認することに集中し、途中でコードを適切にフォーマットすることを忘れることがよくあります。

小さなプログラム(1000行のコード)を作成する場合は、コードをフォーマットせずに済ませることができます。

しかし、プログラムがますます複雑になるにつれて、プログラムはますます理解しにくくなります。ある時点(約15,000行のコード)で、自分で作成したコードを理解するのが難しくなります。

適切にフォーマットされたコードで作業することと、不適切にフォーマットされたコードで作業することの違いは、宮殿に住むことと汚い家に住むことの違いのようなものです。

Pythonコードのフォーマットが重要な理由

読みやすさ

コードをフォーマットすると、コードを効率的に読み取るのに役立ちます。それはより整理されているように見え、誰かがあなたのコードを見るとき、彼らは良い印象を得るでしょう。

コーディング面接に役立ちます

コーディングインタビューに参加しているとき、コードを適切にフォーマットしているかどうかをインタビュアーが気にすることがあります。そのフォーマットを忘れると、コードのフォーマットが不十分なために、仕事の見通しが失われる可能性があります。

チームサポート

チームで作業している場合は、コードのフォーマットがより重要になります複数の人が同じソフトウェアプロジェクトに取り組んでいる可能性があり、あなたが書いたコードはチームメートに理解されなければなりません。そうしないと、一緒に作業するのが難しくなります。

バグを簡単に見つけることができます

正しくフォーマットされていないコードは、バグを見つけたり、プログラムで作業したりすることさえ、本当に、本当に難しくする可能性があります。見るのも本当に恐ろしいです。それはあなたの目に不快です。

ピリントとフレーク8

ほとんどのPython開発者は、PylintまたはFlake8を使用して、コードのエラーやスタイルガイドをチェックすることを楽しんでいます。

Pylintは、Pythonのエラーをチェックするツールです。コーディング標準を適用しようとし、コードの臭いを探します。また、特定のタイプエラーを検索したり、特定のブロックをリファクタリングする方法についての提案を推奨したり、コードの複雑さに関する詳細を提供したりすることもできます。

Flake8は、 PyFlakes pycodestyle、およびNedBatchelderのMcCabeスクリプトをラップするPythonライブラリです。これは、コードベースをコーディングスタイル(PEP8)、「ライブラリはインポートされたが未使用」、「未定義の名前」、インデントされていないコードなどのプログラミングエラーと照合するための優れたツールキットです。

問題は、これらのツールがソースコードで特定した問題のみを報告し、Python開発者にそれらを修正する負担を任せることです。

しかし、問題の特定と解決を同時に行うことができるツールがあるとしたらどうでしょうか。Blackは、エラーの識別Pythonコードのフォーマットを同時に行うことができるツールです。したがって、それはあなたをより生産的にします。

黒入門

プロジェクトREADMEから:

を使用することにより、手作業によるフォーマットの細目に対する制御を譲渡することに同意したことになります。その見返りとして、Blackは速度、決定論、およびフォーマットについてのpycodestyleのしつこいことからの解放を提供します。あなたはより重要な問題のために時間と精神的エネルギーを節約するでしょう。

Blackは、Blackコードスタイルに従ってファイル全体を所定の位置に再フォーマットできます。これは、コード構造やわずかな文体の違いに気を取られることなく、解決したい問題とコードソリューションに脳が集中するのに役立ちます。

それでは、使い方を見てみましょう。

ブラックをインストール

黒はを実行することでインストールできますpip install black。実行するにはPython3.6.0以降が必要です。Blackがインストールされると、シェルでblackという新しいコマンドラインツールを使用できるようになり、開始する準備が整います。

適切なデフォルトをすぐに開始するには、フォーマットするPythonファイルを選択してから、ターミナルに黒いfilename.pyを書き込みます。次に、BlackがPythonファイルをフォーマットします。

ここで、Blackが何を支援できるかを見ていきます。

単一ファイルのフォーマット

この簡単な例を見てみましょう。これが、sample_code.pyという名前のPythonファイルにある2つのPython関数です。

black sample_code.pyターミナルでフォーマットを変更するために使用できます。Blackを実行すると、次の出力が表示されます。

次に、sample_code.pyを開いて、フォーマットされたPythonコードを確認できます。

Pythonコードがフォーマットされ、読みやすくなりました。

複数のファイルをフォーマットする

複数のPythonファイルをフォーマットするにblack folder_name/は、ターミナルに書き込みます。

python_with_blackという名前のフォルダー内の3つのpythonファイルが再フォーマットされました。

書式設定のためのファイルの確認

Blackにファイルを変更させたくないが、Blackがファイルを変更する必要があると考えているかどうかを知りたい場合は、次のいずれかのコマンドを使用できます。

black --check .:これにより、現在のフォルダーでフォーマットできるPythonファイルがチェックされます(ただし、実際にはPythonファイルは変更されません)。

black --check --diff file_name.py :これは、ファイルに対して何をする必要があるかを示していますが、ファイルは変更していません。

1行あたりの文字数を変更する

黒の行の長さはデフォルトで88文字ですが、「-l」または「--line-length」オプションを使用して変更できます。

たとえば、60文字に変更するには:black -l 60 python_file.py

JupyterNotebookの黒

Jupyterノートブックユーザーの場合でも、JupyterBlackと呼ばれるこの単純な拡張機能を使用してPythonコードを自動フォーマットできます。この拡張機能は、ノートブックのコードセル内のコードを黒で再フォーマット/プリティファイします。

JupyterBlack拡張機能は

  • ツールバーボタン。
  • 現在のコードセルを再フォーマットするためのキーボードショートカット(デフォルト:Ctrl-B)。
  • コードセル全体を再フォーマットするためのキーボードショートカット(デフォルト:Ctrl-Shift-B)。

JupyterBlackをインストールします

まず、jupyter-contrib-nbextensionsとblackがインストールされていることを確認してから、次のコマンドを実行します。

jupyter nbextension install //github.com/drillan/jupyter-black/archive/master.zip — user

次に、以下を実行して拡張機能を有効にします。

jupyter nbextension enable jupyter-black-master/jupyter-black 

これで、各ノートブックセルでPythonコードのフォーマットを開始できます。

まず、Pythonコードをフォーマットするノートブックセルを選択してから、Blackという拡張ボタンをクリックします。

次に、JupyterBlackボタンをクリックします。

エディターの統合

Blackをお気に入りのエディターと統合できます。現在、BlackはPyCharm / IntelliJ IDEA、Wing IDE、Vim、Visual Studio Code、Sublime Text 3、Atom / Nuclide、Kakoune、およびThonnyをサポートしています。こちらの手順に従って、Blackをお気に入りのエディターと統合します。

Blackについて詳しく知りたい場合は、ŁukaszLangaによるPyCon2019のトークをご覧になることをお勧めします。

何か新しいことを学んだり、この記事を読んで楽しんだりした場合は、他の人が見ることができるように共有してください。それまでは、次の投稿でお会いしましょう!Twitter @ Davis_McDavidでも連絡できます。