问题描述
刷新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 (将#修改为@)