PEP 08指出:
导入总是放在文件的顶部,就在任何模块注释和文档字符串之后,以及模块全局变量和常量之前.
但是,如果我导入的类/方法/功能仅在极少数情况下使用,那么在需要时进行导入肯定会更有效率吗?
不是这个:
class SomeClass(object):
def not_often_called(self)
from datetime import datetime
self.datetime = datetime.now()
Run Code Online (Sandbox Code Playgroud)
比这更有效率?
from datetime import datetime
class SomeClass(object):
def not_often_called(self)
self.datetime = datetime.now()
Run Code Online (Sandbox Code Playgroud) 我发现了一种新的模式.这种模式是众所周知的还是对它的看法是什么?
基本上,我很难刷新源文件以找出可用的模块导入等等,所以现在,而不是
import foo
from bar.baz import quux
def myFunction():
foo.this.that(quux)
Run Code Online (Sandbox Code Playgroud)
我将所有导入移动到它们实际使用的函数中,如下所示:
def myFunction():
import foo
from bar.baz import quux
foo.this.that(quux)
Run Code Online (Sandbox Code Playgroud)
这做了一些事情.首先,我很少意外地用其他模块的内容污染我的模块.我可以__all__为模块设置变量,但随后我必须在模块发展时更新它,这对于实际存在于模块中的代码无效.
其次,我很少在我的模块顶部进行一连串的进口,其中一半或更多我不再需要,因为我已经重构了它.最后,我发现这个模式更容易阅读,因为每个引用的名称都在函数体中.