Pythonコードをデバッグして、Printの使用をやめてください。

上の「Pythonクローラーとデータマイニング」をクリックしてフォローしてください

Books」に返信すると、初心者から上級者まで、合計10冊のPythonの電子書籍を受け取ることができます。

鶏肉

スープ

Cang Cang Zhulin Temple、鐘は遅れています。

Pythonを学ぶほとんどの人は、間違いなく組み込み関数print()を使用してコードをデバッグすると思います。

次に、大規模なプロジェクトで、printを使用してPythonコードをデバッグすると、端末に複数の出力があることがわかります。

次に、各行の出力の結果であるコードを区別する必要があります。

たとえば、次のプログラムを実行します。

num1 = 30
num2 = 40 

print(num1)
print(num2)

結果を出力します。

30
40

これらの出力のどれがnum1ですか?どちらが再びnum2ですか?

2つの出力を見つけるのは難しいことではないかもしれませんが、5つ以上の異なる出力がある場合はどうでしょうか。出力に関連するコードを見つけようとすると、時間がかかる場合があります。

もちろん、printステートメントにテキストを追加して、理解しやすくすることもできます。

num1 = 30
num2 = 40 

print("num1" num1)
print("num2" num1)

結果を出力します。

num1 30
num2 40

この結果はわかりやすいですが、関連情報を書くのに時間がかかります。

「アイスクリーム」をプレイする時間です〜

01.アイスクリームとは何ですか?

IcecreamはPythonのサードパーティライブラリであり、最小限のコードで印刷とデバッグをより明確にすることができます。

pipを使用してIcecreamライブラリをインストールします。

pip install icecream

次に、Python関数の出力を出力して試してみましょう。

from icecream import ic 

def plus_five(num):
    return num + 5

ic(plus_five(4))
ic(plus_five(5))

出力結果は以下のとおりです。

ic| plus_five(4): 9
ic| plus_five(5): 10

アイスクリームを使うことで、関数の出力だけでなく、関数とそのパラメーターも見ることができます!

02.実装を確認します

コードを実行する場所を知りたい場合は、以下の操作を実行することで、どのステートメントが実行されたかを知ることができます。

def hello(user:bool):
    if user:
        print("I'm user")
    else:
        print("I'm not user")

hello(user=True)

結果を出力します。

I'm user

アイスクリームを使用すると、不要なテキスト情報なしで上記の操作を簡単に完了することができます。

from icecream import ic 

def hello(user:bool):
    if user:
        ic()
    else:
        ic()

hello(user=True)

出力結果は以下のとおりです。

ic| ice_1.py:5 in hello() at 02:34:41.391

出力結果から、関数helloの5行目のコードは実行されましたが、7行目のコードは実行されていません。

03.カスタムプレフィックス

printステートメントにカスタムプレフィックス(コード実行時間など)を挿入する場合は、アイスクリームも使用できます。

from datetime import datetime
from icecream import ic 
import time
from datetime import datetime

def time_format():
    return f'{datetime.now()}|> '

ic.configureOutput(prefix=time_format)

for _ in range(3):
    time.sleep(1)
    ic('Hello')

出力結果は以下のとおりです。

2021-01-24 10:38:23.509304|> 'Hello'
2021-01-24 10:38:24.545628|> 'Hello'
2021-01-24 10:38:25.550777|> 'Hello'

出力の前に表示されるコードの実行時間を確認できます。

04.詳細情報を入手する

出力に関連するコードを知ることに加えて、コード実行の行とコードファイルも知りたい場合があります。

ic.configureOutput()で、includeecontextのパラメーター値をTrueに設定します。

from icecream import ic 

def plus_five(num):
    return num + 5

ic.configureOutput(includeContext=True)
ic(plus_five(4))
ic(plus_five(5))

出力結果は以下のとおりです。

ic| ice_test.py:7 in <module>- plus_five(4): 9
ic| ice_test.py:8 in <module>- plus_five(5): 10

ここで、最初の出力は、ファイルicecream_example.pyの7行目の関数plus_fiveによって実行されることがわかります。

2番目の出力は、コードファイルの8行目の関数plus_fiveによって実行されます。

上記の操作は両方ともic.configureOutput()関数を使用します。

ソースコードを見ると、設定できるパラメータが4つあることがわかります。

  • プレフィックス、カスタム出力プレフィックス

  • outputFunction、出力関数を変更します

  • argToStringFunction、カスタムパラメータシリアル化文字列

  • includeContext、表示ファイル名、コード行、関数情報

05.アイスクリームコードを削除する

最後に、アイスクリームはデバッグにのみ使用でき、他の目的(美しい印刷など)で印刷できます。

from icecream import ic

def plus_five(num):
    return num + 5

ic.configureOutput(includeContext=True)
ic(plus_five(4))
ic(plus_five(5))

for i in range(10):
    print(f'****** Training model {i} ******')

結果を出力します。

ic| ice_1.py:7 in <module>- plus_five(4): 9
ic| ice_1.py:8 in <module>- plus_five(5): 10
****** Training model 0 ******
****** Training model 1 ******
****** Training model 2 ******
****** Training model 3 ******
****** Training model 4 ******
****** Training model 5 ******
****** Training model 6 ******
****** Training model 7 ******
****** Training model 8 ******
****** Training model 9 ******

デバッグ印刷とプリティ印刷を区別できるため、すべてのicデバッグステートメントを検索して削除するのは非常に簡単です。

すべてのデバッグコードを削除すると、Pythonコードはクリーンになります。

総括する

この時点で、アイスクリームを使用して印刷およびデバッグする方法を学習しているはずです。

その他の機能については、「GitHub」をご覧ください〜

https://github.com/gruns/icecream

何千もの川や山がいつも恋をしています。

--- - --- --- --- - --- 終わり --- - --- - --- --- - -

以前の素晴らしい記事の推奨事項:

ようこそ誰もが好きにメッセージを残して、前方、転載をあなたの会社やサポートをありがとうございました

Python学習グループに参加したい場合は、バックグラウンドで返信してください[グループに参加]

何千もの川や山がいつも恋をしています。[見る]をクリックしください。

/本日のメッセージトピック/

一言か二言言ってください~~

おすすめ

転載: blog.csdn.net/pdcfighting/article/details/113812660