python导入-公共或私有约定
作者:互联网
按照Python约定,是否应该将模块的导入视为其公共接口的一部分?
我有一些这样做的代码:
foo.py:
from a import b
bar.py:
from foo import b
我试图决定是否重构bar.py以直接从a导入b.我想在某些情况下,您希望foo.py控制bar.py使用的b的实现.但是,如果不是这种情况,将两个模块以相同的方式导入是否是更好的做法?
解决方法:
In Python convention, should a module’s imports be considered part of it’s public interface, or not?
模块的公共API是该模块记录其公共API的任何内容.如果模块foo记录了它提供的b,则b是其公共API的一部分,无论b实际上是在foo中定义还是从其他位置导入.
许多模块将其代码分成多个文件,并将所有片段一起导入一个模块.例如,collections模块将其部分代码放入C _collections模块中,然后执行
from _collections import deque, defaultdict
deque和defaultdict无疑是集合的公共API的一部分.
如果模块导入了某些不应该包含在其公共API中的内容,则将其作为_thing导入通常是一个好主意,并在其上加下划线以表示所导入的内容是实现细节.
标签:import,conventions,python 来源: https://codeday.me/bug/20191027/1940598.html