"Return" 在脚本中间
"Return" in the middle of a script
我正在调试脚本,暂时想在中间停止脚本并绘制不同变量的一些值。有没有办法从脚本 Python 到 "return" ?我不想完全退出 Python。本质上,我想要的是将脚本冻结在特定点。如果有一个我可以插入的命令,那就太好了——例如,return
——可以做到这一点——然后我会在完成调试后将其删除。
这里有几种方法可以实现这种我认为在我目前的工作环境中不优雅的事情:
(1) 将脚本的代码放在一个函数中,return 在这个函数中途添加所需的变量。
(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()
(在您定义了情节之后)。
我正在调试脚本,暂时想在中间停止脚本并绘制不同变量的一些值。有没有办法从脚本 Python 到 "return" ?我不想完全退出 Python。本质上,我想要的是将脚本冻结在特定点。如果有一个我可以插入的命令,那就太好了——例如,return
——可以做到这一点——然后我会在完成调试后将其删除。
这里有几种方法可以实现这种我认为在我目前的工作环境中不优雅的事情:
(1) 将脚本的代码放在一个函数中,return 在这个函数中途添加所需的变量。
(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()
(在您定义了情节之后)。