WAT:檢視 Python 物件,一款強大的 Debug 工具

看起來有點新奇的工具
不知道拿來 Develop 或是 Debug 好不好用…
🙀 WAT
根據官網的介紹,WAT 源自於英文的 What,通常代表困惑和厭惡,在開發 Python 的應用的時候,常常你也會感到困惑,為什麼會出現 Error,為什麼會這樣,這時,WAT 可以幫助你。
Install
WAT 可以透過 pip 直接安裝,或是透過 Insta-Load 來做讀取,但最簡單的還是透過 pip 安裝
pip install wat
Insta-Load 可以觀看官方的說明 Insta-Load - Link
Usage
使用上就是透過 import
將 wat
引用然後使用
WAT 提供很多使用方法,見下方的範例:
import wat
xxx = ...
# 1. 用 /
wat / xxx
# 2. 當作 function 使用
wat(xxx)
# 3. 類似 Unix 的 Pipe
xxx | wat
接下來來看看 wat 可以做什麼吧~
Check Type
當你不知道某個變數是什麼類型的時候,除了透過 type()
來得知之外,你也可以透過 wat
or wat.s
來知道答案:
import wat
a = 100
wat.s / a

Check Type
Find Methods
要知道一個變數有什麼 method 可以用時,我們除了透過 dir()
之外,wat
也是一個好選擇。從範例可以看到,我們知道 a
的類別是 int
:
import wat
a = []
a.append(100)
wat / a

Find Methods
Look Up Attributes
與 method 類似,我們除了透過 dir()
知道某個變數的 attributes,不妨試試看 wat
。從範例可以看到,我們知道 datetime.datetime.now()
的所有 attribute:
import wat
import datetime
wat / datetime.datetime.now()

Look Up Attributes
Explore Modules
除了 attribute 之外,當然少不了 Modules。從範例可以看到,我們知道 functools
的所有細節:
import wat
import functools
wat / functools

Explore Modules
Prettify
與 method 類似,我們除了透過 dir()
知道某個變數的 attributes,不妨試試看 wat
。從範例可以看到,json.loads()
回傳的 dict 用更好讀懂的方式被印來了:
import wat
import json
a = '{"a": {"b": [1, 2, 3]}}'
wat / json.loads(a)

Prettify
Modifiers
有了上述的介紹,我們都知道 WAT 有很多種功能,我們可以更進一步透過 modifier 來控制 WAT 的輸出:
.short
or.s
:隱藏 attribute (只顯示數值、類型等).dunder
:顯示 __ (雙底線) 開頭的 attribute.code
:顯示 source code.long
:顯示非縮寫值和文件字串.nodocs
:隱藏 function 或是 class 的 document.caller
:顯示在哪裡呼叫的.all
:包含所有可獲得的資料.ret
:回傳查閱的對象.str
:不輸出到畫面,而是回傳 str.gray
:不顯示彩色字元.color
:強制顯示彩色字元
Reference
如果你覺得這篇文章有用 可以考慮贊助飲料給大貓咪