4

Pythonでは、ファイルごとにスペースまたはタブのインデントの使用を強制する手段はありますか?

まあ、おそらく「強制」は「推奨」のように強すぎます。

インデントが混在するパッチファイルを受け取り続けますが、これは煩わしいです...(控えめに言っても)Python自体は問題が発生したときにそれを知ることができますが、文字セットに存在するように、エディターレベルでそれを行うための何かを探しています。

編集:わかりました、私の質問は明確ではありませんでした、私はあなたが想像できるタブ/スペースの任意の組み合わせで修正とパッチを受け取り続けるのでこれを尋ねています。私はMercurialをDVCSとして使用していますが、おそらくこのレベルに何かが存在しますか?

4

4 に答える 4

9

Tim Petersは、 reindent.pyと呼ばれる気の利いたスクリプトを作成しました。このスクリプトは、 .pyファイルを4スペースのインデントを使用し、タブを使用しないように変換します。ここから入手できますが、最初にディストリビューションを確認してください。ExamplesまたはToolsディレクトリにバンドルされている可能性があります。(最新のLTS Ubuntuでは、python2.7-examplesパッケージによって提供されます。)

Mercurialフックを設定できる場合は、reindent.pyを介してすべてのファイルを実行できるはずです。

ちなみに、UNIXを使用している場合は、システムにexpand(およびunexpand)コマンドがあり、すべてのタブをスペースに(およびスペースをタブに)変換することもできます。reindent.pyただし、この場合は、適切なツールだと思います。

于 2010-03-22T10:50:34.120 に答える
5

モジュールを見てくださいtabnanny:—あいまいなインデントの検出。

于 2010-03-22T08:12:38.457 に答える
2

これはあなたの編集者があなたのためにすべきことです。ほとんどのエディター(たとえば、Notepad ++は無料です)では、Tabキーを押すとタブ文字を入力するか、スペースの数を入力するかを設定できます。すべてのファイルでタブの代わりに2つのスペースを使用することをお勧めします(4つは多すぎると思います)。タブの代わりにスペースを使用すると、ファイルを台無しにすることを心配せずに、スペースキーとタブキーの両方を使用してインデントできるため、より適切です。

混合されたファイルがある場合、タブをスペースに変換する独自のスクリプトを作成するのは難しくありません。

于 2010-03-22T08:13:25.557 に答える
2

PEP 8で明示されているように、タブとスペースを混在させないでください。ただし、両方を含むファイルは実行される可能性があります...そこに書かれているように:

The most popular way of indenting Python is with spaces only.  The
second-most popular way is with tabs only.  Code indented with a mixture
of tabs and spaces should be converted to using spaces exclusively.
When invoking the Python command line interpreter with the -t option, it issues
warnings about code that illegally mixes tabs and spaces.  When using -tt
these warnings become errors.  These options are highly recommended!

したがって、解決策はデフォルトとして使用することです。

python -t my_mixed_code.py

編集者レベルで回答するには、編集者によって異なりますので、具体的にご記入ください。

于 2010-03-22T09:00:22.030 に答える