在函数内部导入是否符合Pythonic风格?

13 浏览
0 Comments

在函数内部导入是否符合Pythonic风格?

PEP 8规定:

  • 导入语句总是放在文件顶部,紧跟在模块注释和文档字符串之后,模块全局变量和常量之前。

有时候,我会违反PEP 8的规定。有时候我会在函数内部导入模块。作为一个普遍规则,我只有在某个导入只在一个函数内部使用时才会这样做。

有什么意见吗?

编辑(我觉得在函数内导入的好处):

主要原因:可以使代码更清晰。

  • 当查看一个函数的代码时,我可能会问自己:“函数/类 xxx 是什么?”(xxx在函数内部使用)。如果我将所有的导入语句放在模块顶部,我必须去那里查看以确定 xxx 是什么。当使用from m import xxx时,这个问题更为严重。在函数中看到m.xxx可能会告诉我更多信息。这取决于m是什么:是一个众所周知的顶级模块/包(import m)?还是一个子模块/包(from a.b.c import m)?
  • 在某些情况下,将附加信息(“xxx 是什么?”)靠近使用 xxx 的地方可以使函数更容易理解。
0