2

動的型付けを行わずにコンパイルされた言語のバックグラウンドから来ているので、Pythonでイライラするのは、スペルミスによって新しい変数名を誤って導入する可能性があることです。

数日前にこの例があり、コードは次のようになりました。

received = False

while not received:
   ...
   ...
   ...
   recieved = (some_conditional_statments)
   ...
   ...

print some_results

ここで受け取ったのは、ループの終了条件に達したときにtrueに設定されるはずのブール変数でした。ただし、明らかに、この場合、スペルミス変数(rec * ie * ved)が原因で無限ループに陥りました。

明らかに、コンパイラーはこのような間違いをすぐに見つけます。Pythonでこのようなエラーを回避するために人々がどのような手法を使用しているのか疑問に思っています。

4

2 に答える 2

7

適切なリンターを使用し、自動テスト(単体テストなど)を使用してコードをテストします。ほとんどのIDEとテキストエディタは、リンターを自動的に実行するように設定できます。

使用することをお勧めしflake8ます; pep8これは、スタイルチェッカーの出力であるpyflakesリンター(上記のエラーをキャッチし、recieved割り当てられているが他の場所では使用されていないことを示します)を組み合わせ、コードが複雑になりすぎているかどうかを示します(McCabe循環的複雑度メトリックを使用) )。

于 2013-03-01T10:55:47.347 に答える
4

この種のことにはpycheckerを使用できます。

python linters here に関する質問があります。確認してください。

于 2013-03-01T10:57:32.813 に答える