1
46
绝对进口。政治公众人物8:
显式相对导入是一个很好的语言特性(我猜),但它们并不像绝对导入那样显式。更具可读性的形式是:
尤其是当您导入几个不同的命名空间时。如果您看到一些编写良好的项目/教程,其中包括从包内导入的内容,则它们通常遵循这种样式。 当其他人(也许还有你)试图找出你的名称空间时(特别是当你迁移到3.x时,其中一些包的名称已经改变了),你所需要的几个额外的按键会在将来节省很多时间。 |
2
116
不再强烈建议使用Python相对导入,但在这种情况下强烈建议使用绝对导入。 请看 this discussion 引用圭多本人的话:
操作程序正确链接 PEP 328 上面写着:
也可以看到几乎重复的问题 When or why to use relative imports in Python 当然,它仍然是一个味道的问题。虽然使用相对导入更容易移动代码,但这也可能意外地破坏某些内容;重命名导入并没有那么困难。 要强制使用PEP 328中的新行为:
在这种情况下,隐式相对导入将不再可能(例如。
一个重要的警告是因为
PEP 338
和
PEP 366
,相对导入要求将python文件作为模块导入-不能执行具有相对导入的file.py,否则将获得
在评估最佳方法时,应考虑到这一限制。Guido反对在任何情况下从模块运行脚本:
关于这件事的详尽讨论可以在上面找到。Python 3这非常全面: |
3
31
相对导入不仅让您以后可以在不更改数十个内部导入的情况下重命名包,而且我还成功地解决了某些涉及循环导入或命名空间包的问题,因为它们不发送Python“返回顶部”以从顶级名称空间重新开始搜索下一个模块。 |
DaveP · sklearn包找不到模块 6 年前 |
Greg. O Hajdu · Java多文件和文件夹层次结构 6 年前 |
yearntolearn · R包命名空间 6 年前 |
gfmio · TypeScript NPM包的目标体系结构 6 年前 |
Qaswed · R指在R CMD检查期间不存在的文件 6 年前 |
Fiorelo Odobashi · COTson linux安装 6 年前 |