我正在调试一个脚本,暂时想在中间停止脚本并为不同的变量绘制一些值。 在 Python 中没有办法从脚本中"返回"吗? 我不想完全退出Python。 从本质上讲,我想要的是在特定点冻结脚本。 如果我可以插入一个命令(例如,return
)来执行此操作,那就太好了,然后在完成调试后将其删除。
以下是实现这种事情的几种方法,我认为这些事情在我目前的工作环境中不优雅:
(1) 将脚本的代码放在一个函数中,并在该函数的中途返回所需的变量。
(2)注释掉我想停止的点之后的所有代码。
(3) 将所有需要的变量保存到磁盘,并使用调用 quit
或 sys.exit
完全退出 Python。
没有更好的选择吗?
理论问题
为什么 Python 的设计者决定不允许在脚本中使用return
语句? 这有什么逻辑吗?
您可以使用pdb
来绘制某些内容(至少,它在OS-X上对我来说效果很好):
from matplotlib import pyplot as plt
import numpy as np
array_x = np.arange(10)
array_y = np.arange(10)
import pdb; pdb.set_trace()
print (array_x, array_y)
和我的控制台输出(包括错别字):
$ python ~/sandbox/test.py
> /Users/mgilson/sandbox/test.py(9)<module>()
-> print (array_x, array_y)
(Pdb) plt.ion()
(Pdb) plt.plit(array_x, array_y)
*** AttributeError: 'module' object has no attribute 'plit'
(Pdb) plt.plot(array_x, array_y)
[<matplotlib.lines.Line2D object at 0x112120610>]
(Pdb) c
(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
我用了plt.ion()
,但你可能同样容易地使用plt.show()
(在你定义了你的情节之后)。