ホームページ  >  記事  >  バックエンド開発  >  Pythonの勉強ノート-Pythonのデバッグ

Pythonの勉強ノート-Pythonのデバッグ

黄舟
黄舟オリジナル
2017-01-17 14:21:541067ブラウズ

コードを書くとき、私たちは多くの間違いを犯します。これをデバッグするにはどうすればよいでしょうか?


print ステートメントを使用して印刷する

print ステートメントを使用して必要なものを印刷し、出力で表示できます。


print "hah"

しかし、デバッグ後も print ステートメントを手動で削除する必要があり、これはさらに面倒です。


assert

以前 print が使用されていた場合、代わりにassert ステートメントを使用できます。例:

def foo(s):
s = int(s)
assert s != 0, "s is Zero"
return 10.0 / s
foo('0')

assert ステートメントの後に判定ステートメントが続き、その後にエラー メッセージが続きます。判定ステートメントが一致しない場合は、AssertionError がスローされます。例:

Traceback (most recent call last):
File "/Users/W/Code/Python/Demo/AssertDemo.py", line 7, in 
foo('0')
File "/Users/W/Code/Python/Demo/AssertDemo.py", line 3, in foo
assert s != 0, "s is Zero"
AssertionError: s is Zero

実行中にパラメーター -o を使用して一律にアサートをオフにすることができます。閉じると、assert ステートメントは無効になります。


logging

print ステートメントを logging に置き換えることができます。ロギングでは、assert のようにエラー メッセージがスローされません。ログ記録には多くの利点があります。その 1 つは、特定のレベルの情報を出力するようにカスタマイズできることです。

Level: CRITICAL Numeric value: 50 
Level: ERROR Numeric value: 40
Level: WARNING Numeric value: 30 
Level: INFO Numeric value: 20
Level: DEBUG Numeric value: 10
Level: NOTSET Numeric value: 0

logging.basicConfig(level=logging.DEBUG)

を使用して、ログを簡単に設定できます。このレベルより小さい警告は無視されます。さらに、ログ出力をコンソールに出力するか特定のデバッグ ファイルに出力するかなど、ログ出力の場所を構成することもできます。ログ設定の詳細については、https://segmentfault.com/a/11… を参照してください。


Debugger pdb、Pythonデバッガー

pdbは


python -m pdb test.py

pdbの一般的に使用されるコマンドによって開始されます


n: next、次のステップを実行するために使用されます
l:リストである必要があります。以下で実行されるコードを確認してください
p 変数名: p はパラメータの最初の文字である必要があります。特定の変数の値を確認してください
q: quit、プログラムを終了します

pdb はステップを制御できますPython のバイステップ実行。理論的には、これはユニバーサル デバッガーです。しかし、非常に長いコードを扱う場合、それは非効率的に思えます。ニーズを分析すると、以前のように各ステップを確認するのではなく、実行結果を確認できるように、いくつかの重要なポイントにブレークポイントを設定する必要があります。次に、pdb.set_trace() を見てみましょう。


pdb.set_trace()

プログラムが一時停止されるコード行を記述するだけです:


pdb.set_trace()

Python エディター プロセッサーが pdb.set_trace() に遭遇すると、プログラムは一時停止し、上記の pdb コマンドを使用して各パラメーターの値を表示できます。


もちろん、Pycharm などの多くの最新の IDE は、簡単に使用できる便利なビジュアル デバッグ ツールを多数提供しています。

上記は Python 学習ノート - Python デバッグの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。