想象一下,我有一个包" foolibrary"这是通过setup.py安装的,我是主要的开发人员。哪个是在包内调用导入的首选方法?想象foolibrary有两个模块(a.py,b.py),我需要在c.py中访问它们:
在c.py中,导入这些内容的首选方法是什么?为什么?
from a import blah
VS
from foolibrary.a import blah
vs
from .a import blah
我已经看过这三种并且通常使用foolibrary.a import
风格,但主要是出于习惯。
答案 0 :(得分:1)
相对导入语法from .a import blah
是 现代的做事方式。参见PEP 328,https://www.python.org/dev/peps/pep-0328/,了解为什么它优于替代品。 (尽管PEP 8更倾向于绝对出口,但它也允许包装内相对进口作为可接受的替代品)。
就个人而言,BTW,我总是只导入模块,而不是"东西" (模块内部的函数,类等)。
但是,这是一种远非普遍的风格约束(是,但是https://google-styleguide.googlecode.com/svn/trunk/pyguide.html的一部分 - 并且已经在Google工作了10年,并帮助塑造了部分它的Python实践和风格,我可以理解地偏向于这种风格: - )。