1

嘿嘿,

刚开始为想象中的计算机编写汇编程序,我的班级正在逐线创建,因为 TA 提供的那个很难。我选择了 python,尽管我从来没有真正使用过它(但知道基本语法)并且很喜欢它。

我最喜欢的能力是如何将我刚刚编写的方法粘贴到 shell 中,然后手动对其进行单元测试(我正在使用 IDLE)。

我只是想知道是否有一种方法可以自动将我的 python 代码中的所有符号公开给 shell,这样我就可以调试而无需每次都将我的代码复制并粘贴到 shell 中(尤其是当我在代码中进行修改时) .

干杯

4

2 回答 2

1

您可以导入代码所在的模块。这将公开所有以模块名称为前缀的符号。

最简单方法的详细信息取决于您的操作系统,但您始终可以这样做:

>>> sys.path.append('/path/to/directory/that/my/module/is/in/')
>>> import mymod #.py

在你做出改变之后,你可以做

>>>> reload(mymod)

并且符号现在将引用新值。请注意,这from mymod import foo调用后不会更新的reload意义上中断。所以只需使用.fooreloadmymod.foo

本质上,诀窍是在PYTHONPATH环境变量中获取包含文件的目录。例如,您可以从 .bashrc on linux 执行此操作。我不知道如何在另一个操作系统上进行。我使用virualenv有一个很好的包装器workon命令,所以我只需要键入workon foo并运行 shell 脚本(我必须编写),将必要的目录添加到我的 python 路径。

不过,当我刚开始的时候,我对我的PYTHONPATHenv 变量做了一个永久性的添加,并将我写的模块保存在那里。

另一种选择是使用该-i选项执行您的模块。

$ python -i mymod.py

这将执行模块直到完成,然后将您留在解释器中。虽然这不是 IDLE,但它有点粗糙,但您现在位于模块的命名空间中(或者更确切地说,模块的命名空间是全局命名空间)

于 2010-09-20T00:09:53.857 回答
0

检查IPython。它是增强的交互式 Python shell。您可以%run编写脚本,它会自动将所有全局对象公开给 shell。它非常易于使用且功能强大。你甚至可以使用它来调试你的代码。

例如,如果您的脚本是:

import numpy as np
def f(x):
    return x + 1

您可以执行以下操作:

%run yourScript.py
x = np.eye(4)
y = f(x)
于 2010-09-20T00:21:56.563 回答