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

使用這個開源工具來監控 Python 中的變量

開源 后端
Watchpoints 是一個簡單但功能強大的工具,可以幫助你在調試 Python 時監控變量。

[[392003]]

Watchpoints 是一個簡單但功能強大的工具,可以幫助你在調試 Python 時監控變量。

在調試代碼時,你經常面臨著要弄清楚一個變量何時發生變化。如果沒有任何高級工具,那么可以選擇使用打印語句在期望它們更改時輸出變量。然而,這是一種非常低效的方法,因為變量可能在很多地方發生變化,并且不斷地將其打印到終端上會產生很大的干擾,而將它們打印到日志文件中則變得很麻煩。

這是一個常見的問題,但現在有一個簡單而強大的工具可以幫助你監控變量:watchpoints

“監視點”的概念在 C 和 C++ 調試器中很常見,用于監控內存,但在 Python 中缺乏相應的工具。watchpoints 填補了這個空白。

安裝

要使用它,你必須先用 pip 安裝它:

  1. $ python3 -m pip install watchpoints

在Python中使用 watchpoints

對于任何一個你想監控的變量,使用 watch 函數對其進行監控。

  1. from watchpoints import watch
  2.  
  3. a = 0
  4. watch(a)
  5. a = 1

當變量發生變化時,它的值就會被打印到標準輸出

  1. ====== Watchpoints Triggered ======
  2.  
  3. Call Stack (most recent call last):
  4. <module> (my_script.py:5):
  5. > a = 1
  6. a:
  7. 0
  8. ->
  9. 1

信息包括:

  • 變量被改變的行。
  • 調用棧。
  • 變量的先前值/當前值。

它不僅適用于變量本身,也適用于對象的變化:

  1. from watchpoints import watch
  2.  
  3. a = []
  4. watch(a)
  5. a = {} # 觸發
  6. a["a"] = 2 # 觸發

當變量 a 被重新分配時,回調會被觸發,同時當分配給 a 的對象發生變化時也會被觸發。

更有趣的是,監控不受作用域的限制。你可以在任何地方觀察變量/對象,而且無論程序在執行什么函數,回調都會被觸發。

  1. from watchpoints import watch
  2.  
  3. def func(var):
  4.     var["a"] = 1
  5.  
  6. a = {}
  7. watch(a)
  8. func(a)

例如,這段代碼打印出:

  1. ====== Watchpoints Triggered ======
  2.  
  3. Call Stack (most recent call last):
  4.  
  5. <module> (my_script.py:8):
  6. > func(a)
  7. func (my_script.py:4):
  8. > var["a"] = 1
  9. a:
  10. {}
  11. ->
  12. {'a': 1}

watch 函數不僅可以監視一個變量,它也可以監視一個字典或列表的屬性和元素。

  1. from watchpoints import watch
  2.  
  3. class MyObj:
  4.     def __init__(self):
  5.         self.a = 0
  6.  
  7. obj = MyObj()
  8. d = {"a": 0}
  9. watch(obj.a, d["a"]) # 是的,你可以這樣做
  10. obj.a = 1 # 觸發
  11. d["a"] = 1 # 觸發

這可以幫助你縮小到一些你感興趣的特定對象。

如果你對輸出格式不滿意,你可以自定義它。只需定義你自己的回調函數:

  1. watch(a, callback=my_callback)
  2.  
  3. # 或者全局設置
  4.  
  5. watch.config(callback=my_callback)

當觸發時,你甚至可以使用 pdb

  1. watch.config(pdb=True)

這與 breakpoint() 的行為類似,會給你帶來類似調試器的體驗。

如果你不想在每個文件中都導入這個函數,你可以通過 install 函數使其成為全局:

  1. watch.install() # watch.install("func_name") ,然后以 func_name() 方式使用

我個人認為,watchpoints 最酷的地方就是使用直觀。你對一些數據感興趣嗎?只要“觀察”它,你就會知道你的變量何時發生變化。

嘗試 watchpoints

我在 GitHub 上開發維護了 watchpoints,并在 Apache 2.0 許可下發布了它。安裝并使用它,當然也歡迎大家做出貢獻。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-07-30 09:55:02

2020-11-15 18:00:49

開源可視化工具Python

2023-08-20 16:51:28

Kubernetes開源工具

2023-04-18 18:22:31

開源工具數據庫

2020-02-11 20:00:29

開源開源工具天氣預報

2013-04-16 10:51:17

開源淘寶服務器

2013-04-15 11:29:28

開源系統監控工具

2022-04-08 18:35:13

Linux網絡帶寬系統監控工具

2019-05-20 15:08:07

PythonPyPI庫attrs

2022-02-25 11:51:11

KubeScrape開源監控工具

2010-03-09 15:00:33

Python變量

2021-02-19 10:21:33

黑客攻擊l安全

2017-06-13 16:07:21

開源網絡監控服務器

2020-05-03 12:50:19

開源監控工具網絡監控開源

2021-07-09 05:24:24

云監控工具開源云平臺

2009-03-31 16:41:38

網絡性能網絡監控開源

2019-11-01 09:00:00

Kubernetes開源監控工具

2021-08-31 09:41:57

LinuxiPhone開源工具

2021-09-01 09:47:25

Linux 工具 開發

2010-03-01 17:13:29

Fedora make
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久 | 国产在线精品一区二区三区 | 四虎在线观看 | cao在线 | 在线免费看黄 | 亚洲欧美综合精品久久成人 | 久久亚洲经典 | 91精品国模一区二区三区 | 全部免费毛片在线播放网站 | 日韩另类视频 | 亚洲区一 | 一区二区免费在线视频 | 久久精品国产亚洲夜色av网站 | 久久一区二区三区四区五区 | 国产精品亚洲第一区在线暖暖韩国 | 在线不卡 | 亚洲一区 中文字幕 | 亚洲综合色视频在线观看 | 蜜桃一区二区三区在线 | 国产一级黄色网 | 午夜av一区二区 | 人人亚洲| 国产一级毛片视频 | 亚洲视频 欧美视频 | 亚洲欧美久久 | 日韩a在线观看 | 拍拍无遮挡人做人爱视频免费观看 | 久久人人网 | 欧美日韩中文在线 | 成人免费视频观看 | h视频在线免费看 | 日韩精品一区二区三区在线播放 | 国产精产国品一二三产区视频 | 91久久| 性天堂网 | 亚洲精品第一国产综合野 | 韩国欧洲一级毛片 | 中文字幕日韩欧美一区二区三区 | 日韩综合 | 国产情侣久久 | 欧美aa在线 |