要让解释器在运行时打印出表达式值,您可以使用print语句。还要注意 Python 的字符串格式化工具。
例子:
for i in xrange(0,5):
a = 1 + i
# print the value of a:
print "the current value of variable 'a':", a
无需显式刷新标准输出,除非您想强制打印没有终止换行符的行:
import sys
import time
for i in xrange(0,5):
a = 1 + i
# print the value of a:
# the trailing comma prevents 'print' from adding a newline
print "\rthe current value of variable 'a':", a,
sys.stdout.flush()
# short pause for purposes of demonstration
time.sleep(1)
# finally print a newline
print
要在执行之前打印每个语句,请查看跟踪模块。
例子:
y = 0
for xi in range(3):
y += xi
print y
输出:
$ python -m trace -t tt.py
--- modulename: tt, funcname: <module>
tt.py(2): y = 0
tt.py(3): for xi in range(3):
tt.py(4): y += xi
tt.py(3): for xi in range(3):
tt.py(4): y += xi
tt.py(3): for xi in range(3):
tt.py(4): y += xi
tt.py(3): for xi in range(3):
tt.py(5): print y
3
--- modulename: trace, funcname: _unsettrace
trace.py(80): sys.settrace(None)
您首先要寻找的也可能是调试器,例如pdb。您将获得一个交互式会话,您可以在其中单步执行代码,并以交互方式查看数据。
例子:
$ python -m pdb tt.py
> /home/moooeeeep/tt.py(2)<module>()
-> y = 0
(Pdb) n
> /home/moooeeeep/tt.py(3)<module>()
-> for xi in range(3):
(Pdb) n
> /home/moooeeeep/tt.py(4)<module>()
-> y += xi
(Pdb) n
> /home/moooeeeep/tt.py(3)<module>()
-> for xi in range(3):
(Pdb) n
> /home/moooeeeep/tt.py(4)<module>()
-> y += xi
(Pdb) print y, xi
0 1
(Pdb)
...
大多数 Python IDE(例如PyDev)都很好地集成了调试功能。所以我的建议:去拿一个调试器。