Python shell和execfile的作用域

2 投票
2 回答
2316 浏览
提问于 2025-04-16 03:08

我在使用ipython这个工具,常常需要重新加载一些包含我正在编写的函数的脚本文件。

在我的main.py文件里,我写了这个:

def myreload(): execfile("main.py") execfile("otherfile.py")

当我在同一个ipython会话中直接运行execfile命令后,再调用myreload()是可以正常工作的。

但是,如果会话是新的,我刚刚调用了execfile("main.py"),那么myreload()就无法让otherfile.py里的函数可用。虽然没有报错。

有没有什么想法?

2 个回答

2

如果你想学习如何正确使用 ipython(也就是在交互模式下),那么你应该使用一些特殊的命令,比如:

%run

还有

%edit

你可以通过输入 %run? 来查看这些命令的帮助信息,这样可以看到具体的例子。

另外,你也可以查看这个链接了解更多内容:http://ipython.org/ipython-doc/stable/interactive/tutorial.html

2

函数会创建一个新的作用域。execfile() 是在当前的作用域中运行脚本的。你现在做的这个方法是行不通的。

撰写回答