Python デバッグ; print() とアサーション (分析例 2)

乌拉乌拉~
リリース: 2018-08-23 13:38:04
オリジナル
1709 人が閲覧しました

次の記事では、Python でのデバッグについて学びます。いくつかの Python デバッグ メソッドについて学び、Python プログラミングにおいて Python デバッグがどのような役割を果たすことができるかを理解します。

デバッグが必要な理由

プログラムを一度作成して正常に実行できる確率は非常に低く、基本的には 1% を超えません。修正が必要なさまざまなバグが常に存在します。いくつかのバグは非常に単純です。エラー メッセージを見ればわかります。いくつかのバグは非常に複雑です。エラーが発生したときにどの変数が正しい値を持ち、どの変数が間違った値を持っているかを知る必要があります。したがって、次のことが必要です。プログラムをデバッグし、バグを修正するための手段の完全なセット。では、Python はどのようにして をデバッグするのでしょうか?以下にその答えを示します。

最初の方法 は、単純、直接的、粗雑で効果的です。これは、print() を使用して、問題がある可能性のある変数を出力し、確認することです。 ##実行後の出力で検索する 出力された変数値:

def foo(s):
    n = int(s)
    print('>>> n = %d' % n)
    return 10 / n
def main():
    foo('0')
main()
ログイン後にコピー

print() を使用する最大の欠点は、将来それを削除する必要があることです。プログラムの実行結果には大量のジャンク情報も含まれます。そこで、2 番目の方法があります。

2 番目の方法

は、表示を支援するために print() が使用される場合はどこでも、代わりにアサーション (assert) を使用できます。

$ python err.py
>>> n = 0
Traceback (most recent call last):
  ...
ZeroDivisionError: integer division or modulo by zero
ログイン後にコピー
assert は、式 n ! を意味します。 = 0 は True である必要があります。そうでない場合、プログラム動作のロジックに従って、次のコードは間違いなく間違っています。

アサーションが失敗すると、assert ステートメント自体が AssertionError をスローします:

def foo(s):
    n = int(s)   
     assert n != 0, 'n is zero!'
    return 10 / n
    
    def main():
    foo('0')
ログイン後にコピー

プログラムがアサートでいっぱいの場合、print() と同じになります。ただし、-O パラメータを使用すると、Python インタープリタの起動時にアサートをオフにすることができます。

$ python err.py
Traceback (most recent call last):
  ...
AssertionError: n is zero!
ログイン後にコピー

これをオフにすると、すべてのアサート ステートメントをパスとして表示できます。

以上がこの記事の内容です、この記事では主に

pythonデバッグ

に関する関連知識を紹介しますので、上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。 関連知識の詳細については、php 中国語 Web サイトの

Python チュートリアル

列を参照してください。

以上がPython デバッグ; print() とアサーション (分析例 2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!