Ole*_*pin 8 python python-module python-3.x
我想停止评估正在导入的模块,而不停止整个程序.
这是我想要实现的一个例子:
main.py
Run Code Online (Sandbox Code Playgroud)print('main1') import testmodule print('main2')testmodule.py
Run Code Online (Sandbox Code Playgroud)print(' module1') some_condition=True if some_condition: exit_from_module() # How to do this? print(' module2') # This line is not executed.
预期产量:
Run Code Online (Sandbox Code Playgroud)main1 module1 main2
没有好办法停止执行模块.您可以引发异常,但随后您的导入模块将需要处理它.也许只是像这样重构:
print(' module1')
some_condition = True
if not some_condition:
print(' module2')
Run Code Online (Sandbox Code Playgroud)
更新:更好的方法是将模块更改为仅定义函数和类,然后让调用者调用其中一个来执行他们需要完成的工作.
如果你真的想在导入过程中完成所有这些工作(记住,我认为最好不要),那么你可以将模块更改为:
def _my_whole_freaking_module():
print(' module1')
some_condition = True
if some_condition:
return
print(' module2')
_my_whole_freaking_module()
Run Code Online (Sandbox Code Playgroud)
我的 main.py 看起来像这样,
print 'main 1'
try:
import my_module
except ImportError:
pass
print 'main 2'
Run Code Online (Sandbox Code Playgroud)
而 my_module.py 看起来像这样,
print 'module 1'
if True:
raise ImportError
else:
pass
print 'module 2'
Run Code Online (Sandbox Code Playgroud)
输出是,
main 1
module 1
main 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5962 次 |
| 最近记录: |