pysnooper - 不要再使用print進行除錯
斷點等除錯方法雖然強大,但是設定比較麻煩。為此print成了很多人的最愛。
pysnooper讓你做print的事情,但不需要麻煩地新增很多語句,你只需要新增裝飾器就可以得到執行日誌,包括線執行,及對應變數的值。
安裝
pip install pysnooper
例項
import pysnooper
@pysnooper.snoop()
def number_to_bits(number):
if number:
bits =
while number:
number, remainder = divmod(number, 2)
bits.insert(0, remainder)
return bits
else:
return [0]
number_to_bits(6)
執行:
starting var:.. number = 6
21:14:32.099769 call 3 @pysnooper.snoop()
21:14:32.099769 line 5 if number:
21:14:32.099769 line 6 bits =
new var:....... bits =
21:14:32.099769 line 7 while number:
21:14:32.099769 line 8 number, remainder = divmod(number, 2)
new var:....... remainder = 0
modified var:.. number = 3
21:14:32.099769 line 9 bits.insert(0, remainder)
modified var:.. bits = [0]
21:14:32.099769 line 7 while number:
21:14:32.099769 line 8 number, remainder = divmod(number, 2)
modified var:.. number = 1
modified var:.. remainder = 1
21:14:32.099769 line 9 bits.insert(0, remainder)
modified var:.. bits = [1, 0]
21:14:32.099769 line 7 while number:
21:14:32.099769 line 8 number, remainder = divmod(number, 2)
modified var:.. number = 0
21:14:32.099769 line 9 bits.insert(0, remainder)
modified var:.. bits = [1, 1, 0]
21:14:32.099769 line 7 while number:
21:14:32.099769 line 10 return bits
21:14:32.099769 return 10 return bits
特徵
如果不方便訪問stderr,則可以重定向到檔案:
@pysnooper.snoop('/my/log/file.log')
檢視非區域性變數的值:
@pysnooper.snoop(variables=('foo.bar', 'self.whatever'))
顯示函式呼叫的snoop行:
@pysnooper.snoop(depth=2)
窺探指定字首的行:
@pysnooper.snoop(prefix ='zzz')
乙個小發現
最近在看一些筆試題目,比如說諸如 例一 解答 變換一次就成為為1的只有 2 2 2 變換兩次就成為1的也只有乙個4 4 2 2 2 變換三次就成為1的有兩個數 3 3 1,4 2,2 2 和 8 8 2,4 2,2 2 變換四次就成為1的有三個數6 7 和16 就不一一列了 所以發現這是乙個fib數...
發現乙個問題
今天發現乙個問題。產生這種現象的原因在於maya的節點求值機制。在模擬過程中,是不斷進行以下步驟 1.maya自動對節點網路求值。包括粒子系統狀態更新,動力學系統模擬 2.進行有限元模擬,算出網格頂點的位置 速度 加速度等結果 3.把結果寫入下一幀 4.跳到下一幀 都有相同的結果。所以模擬結果必須寫...
發現乙個引數方程
猶豫了很久,只是出於好奇的目的,還是把它公布出來吧。xy 2.10526 0.5275 0.15t coss sins ln s t 0.23753 s t coss 其中 s 1,0 是曲線長度相關的引數 t 0.35 0.82 是表達曲線形狀變化的時間引數的變數。從而可以動態表示為 lb 0.3...