Python“私有”函数编码约定

时间:2013-02-23 23:54:16

标签: coding-style python-2.7 naming conventions

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

我理解在python中没有绝对的私有函数。但区分“公共”功能和“私人”功能的最佳,最整洁或最常用的风格是什么?

我列出了一些我认识的样式:

  1. 在模块文件中使用__all__来表示其“公共”功能(What's the python __all__ module level variable for?
  2. 在“私人”功能名称的开头使用下划线
  3. 人们使用其他任何想法或惯例吗?

    非常感谢!

1 个答案:

答案 0 :(得分:85)

来自Python的Class模块文档:

  

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

     

由于类私有成员有一个有效的用例(即为了避免名称与子类定义的名称冲突),对这种称为名称修改的机制的支持有限。形式__spam的任何标识符(至少两个前导下划线,最多一个尾随下划线)在文本上用_classname__spam替换,其中classname是当前类名,其中前导下划线被剥离。只要它出现在类的定义中,就可以在不考虑标识符的句法位置的情况下完成这种修改。