执行后将变量保留在内存中

时间:2014-02-05 05:20:43

标签: python shell

在Matlab中,当你运行一个脚本时,变量会留在内存中,你可以在shell中访问它们。我觉得这对调试和探索非常有用。我试图在Python中实现类似的效果。也许这甚至不可能。

例如,假设我有一个名为script.py

的文件
#!/usr/bin/env python

def foo(n):
    return 2*n

x = 5
y = foo(5)

我希望能够运行它,并且可以在python shell中访问xy。我尝试了>>> import script,这样我就可以通过foo访问script.foo(),但我也希望能够访问xy

>>> from script import *也无法完成任务。

如何让python将这些(在内存中)留在python shell中?

2 个答案:

答案 0 :(得分:5)

实现这一目标的最简单方法是使用-i标志(代表“交互式检查”)运行脚本。

python -i my_script.py

脚本将运行,然后将显示Python shell提示符>>>,允许您与脚本创建的变量进行交互。

另一个不错的选择是安装IPython,这会为基本的Python shell添加一些额外的功能。在IPython会话中,您可以调用

%run my_script.py

获得相同的效果。 IPython应该可以在Linux发行版的存储库中使用。

答案 1 :(得分:1)

您可以使用pdb模块在​​任何特定点输入调试器。例如:

import pdb

def foo(n):
    pdb.set_trace()  # <-- enters debugger here
    return 2*n

x = 5
y = foo(5)