目錄

廣告 AD

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

看起來有點新奇的工具

不知道拿來 Develop 或是 Debug 好不好用…

廣告 AD

根據官網的介紹,WAT 源自於英文的 What,通常代表困惑和厭惡,在開發 Python 的應用的時候,常常你也會感到困惑,為什麼會出現 Error,為什麼會這樣,這時,WAT 可以幫助你。


WAT 可以透過 pip 直接安裝,或是透過 Insta-Load 來做讀取,但最簡單的還是透過 pip 安裝

shell

pip install wat

Insta-Load 可以觀看官方的說明 Insta-Load - Link


使用上就是透過 importwat 引用然後使用

WAT 提供很多使用方法,見下方的範例:

python

import wat

xxx = ...

# 1. 用 /
wat / xxx
# 2. 當作 function 使用
wat(xxx)
# 3. 類似 Unix 的 Pipe
xxx | wat

接下來來看看 wat 可以做什麼吧~


當你不知道某個變數是什麼類型的時候,除了透過 type() 來得知之外,你也可以透過 wat or wat.s 來知道答案:

python

import wat
a = 100
wat.s / a

Check Type


要知道一個變數有什麼 method 可以用時,我們除了透過 dir() 之外,wat 也是一個好選擇。從範例可以看到,我們知道 a 的類別是 int

python

import wat
a = []
a.append(100)
wat / a

Find Methods


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

python

import wat
import datetime

wat / datetime.datetime.now()

Look Up Attributes


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

python

import wat
import functools

wat / functools

Explore Modules


與 method 類似,我們除了透過 dir() 知道某個變數的 attributes,不妨試試看 wat。從範例可以看到,json.loads() 回傳的 dict 用更好讀懂的方式被印來了:

python

import wat
import json

a = '{"a": {"b": [1, 2, 3]}}'
wat / json.loads(a)

Prettify


Modifier - WAT

有了上述的介紹,我們都知道 WAT 有很多種功能,我們可以更進一步透過 modifier 來控制 WAT 的輸出:

  • .short or .s:隱藏 attribute (只顯示數值、類型等)
  • .dunder:顯示 __ (雙底線) 開頭的 attribute
  • .code:顯示 source code
  • .long:顯示非縮寫值和文件字串
  • .nodocs:隱藏 function 或是 class 的 document
  • .caller:顯示在哪裡呼叫的
  • .all:包含所有可獲得的資料
  • .ret:回傳查閱的對象
  • .str:不輸出到畫面,而是回傳 str
  • .gray:不顯示彩色字元
  • .color:強制顯示彩色字元


廣告 AD