Pythonコードのフォーマット

はじめに



Python、またはその最も有名なCPythonの代表は、迅速な計算のためにあまり設計されていません。 言い換えれば、彼のパフォーマンスはそれほど良くありません。 しかし、開発の速度と読みやすさは優れています。



読みやすさについて説明しますが、それを増やす方法について説明します。



書式設定の問題



理想的なコード形式は存在しません。 言語ごとに、コード設計で一般に受け入れられている規則に適応する価値があります。 C ++の初心者の中に、次の行に括弧を付けるかどうかについてまだ戦争がある場合、私は何を言うことができます。

Pythonの場合、主なフォーマットの問題は「Cスタイル」です。 C言語のような言語から問題の言語にアクセスすることは珍しいことではありませんが、文字「)(;」で書くことは一般的です。

記号だけが問題ではありません。構成を書く際の冗長性の問題もあります。 PythonはJavaとは異なり、冗長性が低く、初心者が慣れるのに時間がかかります。

これらは、最も頻繁に発生する2つの主な問題です。



設計の標準とガイドライン



さまざまなアプローチを使用してコード実行の速度を上げることができる場合、これらのアプローチは非常に個別ですが、テキストの書式設定に関する直接的なガイドがあります-これはpep8です。 さらに、これを「標準」と呼びます。

規格についてはこちら 、ロシア語はこちら

Pep8は非常に広範囲であり、プログラマーが本当に読みやすいコードを書くことができます。



以下が含まれます。



一般に、多くのコードフォーマットルールをカバーしています。 ただし、すべてのpythonプログラマーがこれらの規則に準拠しているわけではないことに注意してください。

Googleなどの大企業には、Pythonコードを記述するための独自の推奨事項がありますこちらこちらで読むことができます

非常に興味深い読書、お勧めします。



フォーマットを自動化する



pep8にあるルールの数を見ると、リファクタリングのために長時間座っていられます。 それはただ怠け者であり、新しいコードを書くときにある種のルールエラーが発生します。 これを行うには、あなたの人生を簡素化する方法を検討してください。



pep8



コード内の設計エラーの数を把握するには、 pep8ユーティリティを使用する価値があります。

pep8標準に準拠するために、フォルダー内のすべてのファイルを再帰的に表示できるパラメーターの十分なリストがあります。

ユーティリティの出力は次のようなものです。



$ pep8 --first optparse.py optparse.py:69:11: E401 multiple imports on one line optparse.py:77:1: E302 expected 2 blank lines, found 1 optparse.py:88:5: E301 expected 1 blank line, found 0 optparse.py:222:34: W602 deprecated form of raising exception optparse.py:347:31: E211 whitespace before '(' optparse.py:357:17: E201 whitespace after '{' optparse.py:472:29: E221 multiple spaces before operator optparse.py:544:21: W601 .has_key() is deprecated, use 'in'
      
      





それから、エラーがどこにあり、何が起こったのかを明確に理解できます。



autopep8



多くの場合、標準エラーはファイルごとに繰り返されます。 そして、修正を自動化したいという強い要望があります。 この場合、 autopep8アリーナに入ります。

pep8と同様に、エラーを個別に検出し、修正することができます。 修正可能なフォーマットエラーのリストは、 ここにあります。

autopep8自体の使用は非常に簡単で、次のようになります。



 $ autopep8 ./ --recursive --in-place -a
      
      





このコマンドの実行後、ユーティリティはサブフォルダーを再帰的に通過し、ファイル自体のエラーの修正を開始します。



オートフレーク



さらに進んで、 オートフレークを武器として使用できます。 このユーティリティは、未使用のインポートと変数を削除するのに役立ちます。

このように使用します:



 $ autoflake --in-place --remove-all-unused-imports --remove-unused-variables -r ./
      
      





これにより、ディレクトリ内のファイルが再帰的に消去されます。



統一する



コード編集の最後の最後のポイントは行です。 誰かが単一のアポストロフィで、誰かが二重でアポストロフィを書くのが好きです。 これだけのために、推奨事項と、自動的に調整できるユーティリティがあります- 統一

使用法:



 $ unify --in-place -r ./src/
      
      





他の場所と同様に、ユーティリティはフォルダ内のファイルに対して再帰的にダーティジョブを実行します。



docformatter



私たちは常にコード自体について話しているので、コメントは議論されていません。 時が来ました-docformatter 。 このユーティリティは、docstringをPEP 257契約の下に置くのに役立ちます。 この契約は、文書の作成方法を規定しています。

ユーティリティの使用は、前のものより複雑ではありません。



 $ docformatter --in-place example.py
      
      







みんな一緒にいられますか?



ユーティリティは上記で説明されており、起動時に、マジック名clean.bashでbashスクリプトを追加して実行できます。 または、他の方法でこれらのユーティリティのラッパーを使用することができます-pyformat



結論



Pythonコードは読みやすいですが、読みやすいコードから麺を作る方法もあります。

この記事では、コード設計のいくつかの問題と、これらの問題を見つける方法を発表しました。 コードの設計におけるいくつかの欠陥を自動的に削除できるようにするいくつかのユーティリティが検討されました。

あらゆる言語に普遍的なコードを作成する場合、次の推奨事項を声に出して声を上げる価値があります。同様のpep8ドキュメントよりも重要なデザインルールはスタイルの不変性です。 プログラムを記述するスタイルを選択し、すべてのコードを同じスタイルで記述しました。



読者が興味を持っているなら、次の記事でコードのエラーを自動的に検索する方法を説明します。



All Articles