PEP 8说:
- 导入总是放在文件的顶部,就在任何模块注释和文档字符串之后,以及模块全局变量和常量之前.
在发生时,我违反了PEP 8.有时我会在函数中导入内容.作为一般规则,如果导入仅在单个函数中使用,则执行此操作.
任何意见?
编辑(我觉得导入函数的原因可能是一个好主意):
主要原因:它可以使代码更清晰.
from m import xxx.看到m.xxx这个功能可能会告诉我更多.具体取决于m:它是一个众所周知的顶级模块/包(import m)吗?或者它是一个子模块/包(from a.b.c import m)?假设我有一个相对较长的模块,但只需要一次外部模块或方法.
在模块中间导入该方法或模块是否可以?
或者应该import只在模块的第一部分.
例:
import string, pythis, pythat
...
...
...
...
def func():
blah
blah
blah
from pysomething import foo
foo()
etc
etc
etc
...
...
...
Run Code Online (Sandbox Code Playgroud)
请证明您的答案是合理的,并添加指向PEP或相关来源的链接
假设我正在构建一个用于一般用途的类:我可能需要在任何地方导入它,在其他几个文件中使用它等等。导入应该在类之前进行,如:
import foo
class Bar():
def __init__(self):
foo.spam()
Run Code Online (Sandbox Code Playgroud)
或者在__init__方法内部,如:
class Bar():
def __init__(self):
import foo
foo.spam()
Run Code Online (Sandbox Code Playgroud)
+ 将foo引入全局命名空间以供自始至终使用Bar
- 导入(@MartijnPieters等人)Bar还需要您手动导入foo
+ 避免foo在您真正需要之前加载
+foo在Bar实例化导入(和使用)时加载(@BrenBarn)
-foo其他地方不可用
可能重复:
Python中的好或坏做法:在文件中间导入
我已经习惯了Java这样的语言,它要求所有import语句都出现在类/文件的顶部.
哪个被认为是更加pythonic /"美丽" - 将它们全部放在顶部,或根据需要,因为它们是需要的?