我发现了一种新的模式。这种模式是众所周知的,还是大家对它有什么看法?
基本上,我花了很长时间来清理源文件,以确定哪些模块导入是可用的等等
import foo
from bar.baz import quux
def myFunction():
foo.this.that(quux)
我把所有的导入都转移到实际使用的函数中,像这样:
def myFunction():
import foo
from bar.baz import quux
foo.this.that(quux)
这个可以做一些事情。首先,我很少意外地用其他模块的内容污染我的模块。我可以为模块设置 __all__
变量,但是随着模块的发展,我必须对它进行更新,这无助于解决实际存在于模块中的代码的名称空间污染问题。
其次,我很少在我的模块顶部结束一连串的导入,其中一半或更多我不再需要,因为我已经重构了它。最后,我发现这个模式更容易阅读,因为每个引用的名称都在函数体中。