返回介绍

导入只发生一次

发布于 2024-01-29 22:24:16 字数 750 浏览 0 评论 0 收藏 0

使用模块时,初学者最常问的问题之一似乎就是:“为什么我的导入不是一直有效?”他们时常报告说,第一次导入运作良好,但是在交互式会话模式(或程序运行)期间,之后的导入似乎就没有效果。事实上,本来就应该如此,原因如下。

模块会在第一次import或from时载入并执行,并且只在第一次如此。这是有意而为之的,因为该操作开销较大。在默认的情况下,Python只对每个文件的每个进程做一次操作。之后的导入操作都只会取出已加载的模块对象。

结果,因为模块文件中的顶层程序代码通常只执行一次,你可以凭借这种特性对变量进行初始化。例如,考虑下面文件simple.py。

此例中,print和=语句在模块第一次导入时执行,而变量spam也在导入时初始化:

第二次和其后的导入并不会重新执行此模块的代码,只是从Python内部模块表中取出已创建的模块对象。因此,变量spam不会再进行初始化:

当然,有时需要一个模块的代码通过某种导入后再一次运行。我们将会在本章稍后介绍如何使用内置函数reload实现这种操作。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文