python - 导入内部函数是pythonic吗?

标签 python conventions

PEP 8说:

  • Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants.

有时,我违反了 PEP 8。有时我在函数中导入东西。作为一般规则,如果有一个只在单个函数中使用的导入,我会这样做。

有什么意见吗?

编辑(我觉得在函数中导入可能是个好主意):

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

  • 查看函数代码时,我可能会问自己:“什么是函数/类 xxx?” (函数内部使用了xxx)。如果我在模块的顶部有我的所有导入,我必须去那里看看 xxx 是什么。这在使用 from m import xxx 时更成问题。在函数中看到 m.xxx 可能会告诉我更多信息。取决于 m 是什么:它是众所周知的顶级模块/包(import m)吗?还是子模块/包(from a.b.c import m)?
  • 在某些情况下,在使用 xxx 的位置附近添加额外信息(“什么是 xxx?”)可以使函数更易于理解。

最佳答案

从长远来看,我认为您会喜欢将大部分导入放在文件顶部,这样您就可以通过需要导入的内容一眼看出您的模块有多复杂。

如果我要向现有文件添加新代码,我通常会在需要的地方进行导入,然后如果代码仍然存在,我会将导入行移至文件顶部,从而使事情变得更加永久。

另外一点,我更喜欢在运行任何代码之前获得 ImportError 异常——作为健全性检查,因此这是在顶部导入的另一个原因。

我使用 pyChecker 来检查未使用的模块。

关于python - 导入内部函数是pythonic吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024049/

相关文章:

python - Python 中自动包含模块

python - 使用多列索引创建 Pandas Dataframe

ruby-on-rails - 在 Ruby 和/或 Rails 中在哪里定义自定义错误类型?

F# 在 do block 中包装语句

mysql - 一张 table vs 多张 table

c++ - 关于堆清理的 C++ 约定理论,一个建议的构建,是好的做法吗?

python - 我认为这应该引发错误,但事实并非如此

python - 将日期时间转换为字符串并再次转换回来

python - 是否有Python3内置用于格式化表示多项式首项系数的字符串?

firebase - Firestore 数据建模文章和类别