在为公共API编写模块时,将os导入为_os?

问题描述

刷新PEP 8上的内存时,我读到了这本书(重点是我的):

公共和内部接口

任何向后兼容性保证仅适用于公共接口。因此,重要的是用户必须能够清楚地区分公共接口和内部接口。

文档化的接口被视为公共接口,除非文档明确声明它们是临时接口或内部接口,但不受通常的向后兼容性保证。所有未记录的接口都应假定为内部接口。

为了更好地支持自省,模块应使用__all__属性在其公共API中显式声明名称。将__all__设置为空列表表示该模块没有公共API。

即使已正确设置__all__,内部接口(程序包,模块,类,函数属性或其他名称)也应前缀单个下划线。

如果任何包含名称空间(包,模块或类)的内部接口都被视为内部接口,则该接口也被视为内部接口。

导入的名称应始终被视为实现细节。除非其他模块是包含模块的API中明确记录的一部分,否则其他模块不得依赖对此类导入名称的间接访问,例如os.path或从子模块公开功能的软件包的__init__模块。

明确表示在API模块中进行内部导入时,我应该写:

import os as _os

代替

import os

除非我希望os模块成为公共接口的一部分?

虽然通常在私有函数和变量前加上下划线作为前缀,但我几乎从未见过这种重命名的模块导入。 PEP8还是建议吗?还是使用“ {应始终将导入的名称视为实现细节”)保存的import os ??

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)