Python shell和execfile范围

时间:2010-08-22 05:54:06

标签: python ipython execfile

我在ipython shell中工作,经常需要重新加载包含我的函数的脚本文件。

在我的main.py中,我有:

def myreload():     的execfile( “main.py”)     的execfile( “otherfile.py”)

如果我已经在同一个ipython会话中直接运行了execfile命令,那么调用myreload()就可以了。

但是,由于某种原因,如果会话是新鲜的,我只是调用了execfile(“main.py”),那么myreload()实际上并没有使otherfile.py中的函数可用。它不会引发任何错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

函数创建一个新范围。 execfile()在当前范围内运行脚本。你在做什么是行不通的。

答案 1 :(得分:1)

如果您想了解 ipython 的实际正确用法(即在交互模式下),那么您应该使用魔术命令,如:

%run

%edit

使用%run?检查这些功能的帮助。这提供了明确的例子。

另见http://ipython.org/ipython-doc/stable/interactive/tutorial.html