【问题标题】:Make python module not load/run itself unless it is a an "import"除非它是“导入”,否则使 python 模块不会自行加载/运行
【发布时间】:2023-04-01 23:21:01
【问题描述】:

我创建了几个模块,用于我正在尝试编写的游戏中。 模块本身工作正常(作为主程序的一部分),但如果我单独运行它们,则会挂起。有没有办法让它们不运行/加载或者可能立即退出,除非它们被主程序导入和运行?

我对编程很陌生并且犯了很多错误,所以我经常测试运行代码,有时忘记从“module.py”选项卡切换到我的“main.py”选项卡。它加载窗口并挂起,别无选择,只能从任务栏中强制退出。

【问题讨论】:

  • 如果直接运行你的模块为什么不能工作?他们是做什么的?
  • 您的模块底部有if __name__ == '__main__ 子句吗?您可以使用它来定义直接运行时的行为。
  • 我没有 if name == 'main 在模块中。我试试看,谢谢。

标签: python import module


【解决方案1】:

如果您不希望 modules.py 中的代码独立运行,为什么不将它放在您在 main.py 中调用的函数中?

例如 modules.py

def foo():
    # code goes here

在 main.py 中

import modules

# when code from modules.py is required
modules.foo()

或者你可以有

from modules import foo

# when code from modules.py is required
foo()

-感谢@laurencevs 指出我合并了两个选项:s

【讨论】:

  • 如果你导入 foo from 模块,那么它只是 foo(),而不是 modules.foo()
  • 已更新,如果仍然需要模块名称,我将执行诸如 from modules import foo as modules 之类的操作,但考虑反对它,因为它会令人困惑
  • 谢谢我尝试按照您的建议进行操作,并认为我找到了导致模块挂起的原因。双方都在互相引进。我会解决这个问题并使用你的解决方案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
相关资源
最近更新 更多