我正在调试脚本,暂时希望在中间停止脚本并为不同的变量绘制一些值。 Python中没有办法从脚本中“返回”吗?我不想完全退出Python。从本质上讲,我想要的是在特定点冻结脚本。如果有一个我可以插入的命令 - 例如return
- 就可以执行此操作 - 那么在完成调试后我会删除它。这将是非常好的。
以下是实现此类事情的几种方法,我认为此时我的工作环境不够优秀:
(1)将脚本的代码放在函数中,并在此函数的中途返回所需的变量。
(2)在我想要停止的点之后注释掉所有代码。
(3)将所有需要的变量保存到磁盘,并使用quit
或sys.exit
调用完全退出Python。
有没有更好的选择?
为什么Python的设计者决定不在脚本中允许return
语句?这有逻辑吗?
答案 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()
(在您定义情节后)。