pip安装
pip install pysnooper
使用
import pysnooper
@pysnooper.snoop()
def test(n):
if n<2:
return 1
return (test(n-1)) * n
test(5)
# 详细结果如下 每一行的操作 变量的类型和变化 以及缩进 返回值都清清楚楚
Source path:... D:funtion.py
Starting var:.. n = 5
14:44:43.327914 call 18 def test(n):
14:44:43.327914 line 19 if n<2:
14:44:43.327914 line 21 return (test(n-1)) * n
Starting var:.. n = 4
14:44:43.327914 call 18 def test(n):
14:44:43.327914 line 19 if n<2:
14:44:43.327914 line 21 return (test(n-1)) * n
Starting var:.. n = 3
14:44:43.327914 call 18 def test(n):
14:44:43.327914 line 19 if n<2:
14:44:43.327914 line 21 return (test(n-1)) * n
Starting var:.. n = 2
14:44:43.327914 call 18 def test(n):
14:44:43.327914 line 19 if n<2:
14:44:43.327914 line 21 return (test(n-1)) * n
Starting var:.. n = 1
14:44:43.327914 call 18 def test(n):
14:44:43.327914 line 19 if n<2:
14:44:43.327914 line 20 return 1
14:44:43.327914 return 20 return 1
Return value:.. 1
Elapsed time: 00:00:00.000998
14:44:43.328912 return 21 return (test(n-1)) * n
Return value:.. 2
Elapsed time: 00:00:00.000998
14:44:43.328912 return 21 return (test(n-1)) * n
Return value:.. 6
Elapsed time: 00:00:00.000998
14:44:43.328912 return 21 return (test(n-1)) * n
Return value:.. 24
Elapsed time: 00:00:00.000998
14:44:43.328912 return 21 return (test(n-1)) * n
Return value:.. 120
Elapsed time: 00:00:00.000998
若不想跟踪整个函数,可以使用with
def test(n):
if n<2:
return 1
with pysnooper.snoop():
return (test(n-1)) * n
test(5)
# 详细结果如下
Source path:... D:/funtion.py
New var:....... n = 5
14:50:53.402257 line 20 return (test(n-1)) * n
Source path:... D:/funtion.py
New var:....... n = 4
14:50:53.402257 line 20 return (test(n-1)) * n
Source path:... D:/funtion.py
New var:....... n = 3
14:50:53.402257 line 20 return (test(n-1)) * n
Source path:... D:/funtion.py
New var:....... n = 2
14:50:53.402257 line 20 return (test(n-1)) * n
Elapsed time: 00:00:00.000000
Elapsed time: 00:00:00.000000
Elapsed time: 00:00:00.000000
Elapsed time: 00:00:00.000000
若不想结果输出到控制台,还可以把结果输出到日志文件