成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

答應我,別再用Print調試Python了!

開發 后端
相信大部分人學習Python,肯定會用print()這個內置函數,來調試代碼的。

[[379262]]

 相信大部分人學習Python,肯定會用print()這個內置函數,來調試代碼的。

那么在一個大型的項目中,如果你也是使用print來調試你的Python代碼,你就會發現你的終端有多個輸出。

那么你便不得不去分辨,每一行的輸出是哪些代碼的運行結果。

舉個例子,運行下面這個程序。 

  1. num1 = 30  
  2. num2 = 40   
  3. print(num1)  
  4. print(num2) 

輸出結果。 

  1. 30  
  2. 40 

這些輸出中哪一個是num1?哪一個又是num2呢?

找出兩個輸出可能不是很困難,但是如果有五個以上的不同輸出呢?嘗試查找與輸出相關的代碼可能會很耗時。

當然你可以在打印語句中添加文本,使其更容易理解: 

  1. num1 = 30  
  2. num2 = 40   
  3. print("num1" num1)  
  4. print("num2" num1) 

輸出結果。 

  1. num1 30  
  2. num2 40 

這個結果就很容易理解了,但是需要時間去寫相關的信息。

這時就該「Icecream」上場了~

01. 什么是Icecream?

Icecream是一個Python第三方庫,可通過最少的代碼使打印調試更清晰明了。

使用pip安裝Icecream庫。

  1. pip install icecream 

下面,讓我們通過打印Python函數的輸出來進行嘗試。 

  1. from icecream import ic   
  2. def plus_five(num):  
  3.     return num + 5  
  4. ic(plus_five(4))  
  5. ic(plus_five(5)) 

輸出結果如下。 

  1. ic| plus_five(4): 9  
  2. ic| plus_five(5): 10 

通過使用icecream,我們不僅可以看到函數輸出,還可以看到函數及其參數!

02. 檢查執行情況

如果你想要找到執行代碼的位置,可以通過執行如下所示的操作,來查找執行了哪個語句。 

  1. def hello(user:bool):  
  2.     if user:  
  3.         print("I'm user")  
  4.     else:  
  5.         print("I'm not user")  
  6. hello(user=True

輸出結果。

  1. I'm user 

使用icecream則無需多余的文本信息,就可以輕松地完成上述的操作。 

  1. from icecream import ic   
  2. def hello(user:bool):  
  3.     if user:  
  4.         ic()  
  5.     else:  
  6.         ic()  
  7. hello(user=True

輸出結果如下。 

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

從輸出結果看,函數hello中的第5行的代碼已被執行,而第7行的代碼未執行。

03. 自定義前綴

如果您想在打印語句中插入自定義前綴(例如代碼執行時間),icecream也是能實現的。 

  1. from datetime import datetime  
  2. from icecream import ic   
  3. import time  
  4. from datetime import datetime  
  5. def time_format():  
  6.     return f'{datetime.now()}|> '  
  7. ic.configureOutput(prefix=time_format 
  8. for _ in range(3):  
  9.     time.sleep(1)  
  10.     ic('Hello') 

輸出結果如下。 

  1. 2021-01-24 10:38:23.509304|> 'Hello'  
  2. 2021-01-24 10:38:24.545628|> 'Hello'  
  3. 2021-01-24 10:38:25.550777|> 'Hello' 

可以看到代碼的執行時間,就顯示在輸出的前面。

04. 獲取更多的信息

除了知道和輸出相關的代碼之外,你可能還想知道代碼執行的行和代碼文件。

在ic.configureOutput()中,設置includeecontext的參數值為True即可。 

  1. from icecream import ic   
  2. def plus_five(num):  
  3.     return num + 5  
  4. ic.configureOutput(includeContext=True 
  5. ic(plus_five(4))  
  6. ic(plus_five(5)) 

輸出結果如下。 

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

這里我們就知道了,第一個輸出是由函數plus_five在文件icecream_example.py的第7行執行的。

第二個輸出則是由函數plus_five在代碼文件的第8行執行的。

上述兩個操作都用到了ic.configureOutput()函數。

通過查看源碼,可知有四個可供設置的參數。

  •  prefix,自定義輸出前綴
  •  outputFunction,更改輸出函數
  •  argToStringFunction,自定義參數序列化字符串
  •  includeContext,顯示文件名、代碼行、函數信息

05. 刪除Icecream代碼

最后你可以將icecream僅用于調試,而將print用于其他目的(例如漂亮的打印)。 

  1. from icecream import ic  
  2. def plus_five(num):  
  3.     return num + 5  
  4. ic.configureOutput(includeContext=True 
  5. ic(plus_five(4))  
  6. ic(plus_five(5))  
  7. for i in range(10):  
  8.     print(f'****** Training model {i} ******') 

輸出結果。 

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

由于你可以區分調試打印和漂亮打印,因此搜索和刪除所有ic調試語句非常容易。

刪除所有調試代碼后,你的Python代碼就整潔了。

總結

到此,你就應該就學會了如何使用icecream去打印調試。 

 

責任編輯:龐桂玉 來源: 機器學習算法與Python學習
相關推薦

2020-12-02 11:18:50

print調試代碼Python

2020-12-04 10:05:00

Pythonprint代碼

2020-09-08 08:45:39

jupyter插件代碼

2024-06-12 13:54:37

編程語言字符串代碼

2025-05-19 04:00:00

2021-06-09 06:41:11

OFFSETLIMIT分頁

2020-12-03 09:05:38

SQL代碼方案

2020-12-15 08:06:45

waitnotifyCondition

2023-10-26 16:33:59

float 布局前段CSS

2021-05-25 09:30:44

kill -9Linux kill -9 pid

2020-07-17 07:15:38

數據庫ID代碼

2022-01-27 07:48:37

虛擬項目Django

2024-12-26 07:47:20

2019-03-12 14:48:29

路由器XBOXPS4

2022-10-27 21:34:28

數據庫機器學習架構

2022-03-10 10:12:04

自動化腳本Bash

2025-05-15 03:00:00

2023-09-08 08:35:42

層疊樣式表CSS

2023-06-26 08:20:02

openapi格式注解

2023-09-14 12:03:30

空指針判空
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区av | 欧美在线视频一区二区 | 亚洲视频一区在线观看 | 精品福利在线视频 | 欧美一区二区三区在线播放 | 日日草天天干 | 在线一区 | 日本国产一区二区 | 国产一区二区三区四区五区3d | 成人三级网址 | 在线国产一区 | 国产精品美女在线观看 | 超碰国产在线 | 国产免费一区二区三区 | 91在线视频免费观看 | 精品中文字幕一区二区三区 | 青青久在线视频 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 亚洲午夜精品一区二区三区 | 91久久久www播放日本观看 | 亚洲一二三在线观看 | 中国大陆高清aⅴ毛片 | 91n成人 | 精品免费国产一区二区三区 | 国产一区二区不卡 | 成人一区二区电影 | 国产一区二区三区四区三区四 | 亚洲国产精品视频 | 欧美性乱| 亚洲精品视频一区 | av先锋资源 | 天天看逼 | 国外成人免费视频 | 日本一区二区电影 | 精品国产一区二区三区久久久蜜月 | 午夜精品久久久久久久99黑人 | 欧美午夜在线 | 国产一区二区三区四区 | 亚洲欧美日韩系列 | 狠狠艹 | 九九色综合 |