Python“私有”函数编码约定

当编写一个python模块和函数时,我有一些应该暴露给外部人员的“公共”函数,但是一些其他“私人”函数只能在本地和内部看到和使用。

我明白在Python中没有绝对的私人function。 但是,将“公共”function与“私人”function区分开来的最好,最简洁,最常用的风格是什么?

我列出了一些我知道的风格:

  1. 在模块文件中使用__all__来表示它的“公共”函数( 什么是Python的__all__模块级variables? )
  2. 在“私人”function名称的开头使用下划线

有没有人使用的其他想法或惯例?

非常感谢你!

从Python的Class模块文档:

私有的“实例variables,除了在对象内部不能被访问,在Python中不存在。 但是,大多数Python代码都有一个约定:以下划线(例如_spam)作为前缀的名称应被视为API的非公开部分(无论是函数,方法还是数据成员) 。 这应该被视为实施细节,如有更改,恕不另行通知。

由于类私有成员有一个有效的用例(即为了避免名称与由子类定义的名称发生冲突),对这种称为名称修改的机制的支持是有限的。 任何forms的__spam标识符(至less两个前导下划线,最多一个尾随下划线)被文本replace为_classname__spam,其中classname是当前类名,前导下划线被去除。 只要发生在类的定义内,就不必考虑标识符的语法位置。