快速背景:写一个模块。我的一个对象的方法可能会也可能不会被成功完成 - 这取决于我的模块下面使用的框架。因此,一些方法首先需要检查他们实际上在他们脚下的框架。解决这一当前的方法是:导入功能而不是开始或脚本?
def framework_dependent_function():
try:
import module.that.may.not.be.available
except ImportError:
# the required functionality is not available
# this function can not be run
raise WrongFramework
# or should I just leave the previous exception reach higher levels?
[ ... and so on ... ]
丈二和尚在我的脑海里不断告诉我,在一个文件的中间做进口是一件坏事。我想,除了稍微杂乱的代码之外,我不记得原因,甚至不能提出一个理由。
那么,我在这里做什么是否有什么完全错误的?也许还有其他的方式来探索模块运行在什么环境,在__init__
附近的某个地方?
这影响了'framework_dependent_function'的第一个定义。 –
@Jakob:你必须在'try'之前放* * def'块,否则你的'NotImplemented'版本总是会被反弹回到下面的'def'。 –
好点D:。 –