在剧本中间“返回”

时间:2016-07-13 17:52:50

标签: python debugging return exit

我正在调试脚本,暂时希望在中间停止脚本并为不同的变量绘制一些值。 Python中没有办法从脚本中“返回”吗?我不想完全退出Python。从本质上讲,我想要的是在特定点冻结脚本。如果有一个我可以插入的命令 - 例如return - 就可以执行此操作 - 那么在完成调试后我会删除它。这将是非常好的。

以下是实现此类事情的几种方法,我认为此时我的工作环境不够优秀:

(1)将脚本的代码放在函数中,并在此函数的中途返回所需的变量。

(2)在我想要停止的点之后注释掉所有代码。

(3)将所有需要的变量保存到磁盘,并使用quitsys.exit调用完全退出Python。

有没有更好的选择?

理论问题

为什么Python的设计者决定不在脚本中允许return语句?这有逻辑吗?

1 个答案:

答案 0 :(得分:3)

可以使用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()(在您定义情节后)。