中止 Python 中模块的执行
我想停止评估正在导入的模块,而不停止整个程序。
这是我想要实现的目标的示例:
main.py
print('main1') 导入测试模块 打印('main2')
testmodule.py
print('模块1') 一些_条件=真 如果某些_条件: exit_from_module() # 如何做到这一点? print(' module2') # 该行不执行。
预期输出:
<前><代码>main1 模块1 主2
I'd like to stop evaluation of a module that is being imported, without stopping the whole program.
Here's an example of what I want to achieve:
main.py
print('main1') import testmodule print('main2')
testmodule.py
print(' module1') some_condition=True if some_condition: exit_from_module() # How to do this? print(' module2') # This line is not executed.
Expected output:
main1 module1 main2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
没有好的方法来停止模块的执行。您可以引发异常,但随后您的导入模块将需要处理它。也许只是像这样重构:
更新:更好的方法是将模块更改为仅定义函数和类,然后让调用者调用其中之一来执行他们需要完成的工作。
如果您确实想在导入期间完成所有这些工作(记住,我认为最好不要这样做),那么您可以将模块更改为如下所示:
There is no good way to stop execution of a module. You can raise an exception, but then your importing module will need to deal with it. Perhaps just refactor like this:
Update: Even better would be to change your module to only define functions and classes, and then have the caller invoke one of those to perform the work they need done.
If you really want to do all this work during import (remember, I think it would be better not to), then you could change your module to be like this:
我的 main.py 看起来像这样,
而 my_module.py 看起来像这样,
输出是,
My main.py looks like this,
and my_module.py looks like this,
output is,
您可以将模块代码包装在函数内,如下所示:
You can wrap the module code inside function, like this:
使用 while 和 break 的简单解决方案。
也可以使用 for 循环或 try 块来实现。
别忘了最后一次休息!
Simple solution using while and break.
Also can be implemented using for loop or try block.
Dont forget the last break! ????