Python shell 和 execfile 范围

发布于 2024-09-15 15:04:47 字数 352 浏览 13 评论 0原文

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

在我的 main.py 中,我有:

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

如果我已经在同一个 ipython 会话中直接运行 execfile 命令,则

调用 myreload() 可以正常工作。然而,由于某种原因,如果会话是新鲜的并且我刚刚调用了 execfile("main.py"),那么 myreload() 实际上并没有使 otherfile.py 内部的函数可用。但它不会抛出任何错误。

有什么想法吗?

I'm working from inside an ipython shell and often need to reload the script files that contain my functions-under-construction.

Inside my main.py I have:

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

Calling myreload() works fine if I have already ran in the same ipython session the execfile commands directly.

However, for some reason, if the session is fresh and I just called execfile("main.py"), then myreload() doesn't actually make the functions from inside otherfile.py available. It doesn't throw any error though.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

反差帅 2024-09-22 15:04:47

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

Functions create a new scope. execfile() runs the script in the current scope. What you are doing will not work.

五里雾 2024-09-22 15:04:47

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

%run

%edit

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

另请参阅 http://ipython.org/ipython-doc/stable/interactive/tutorial .html

If you seek to learn the actual correct usage of ipython (i.e. in interactive mode), then you should use magic commands like:

%run

and

%edit

Check help for those functions with %run?. This provides explicit examples.

See also http://ipython.org/ipython-doc/stable/interactive/tutorial.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文