我应该用下划线开始一个辅助函数吗? [复制]

Posted

技术标签:

【中文标题】我应该用下划线开始一个辅助函数吗? [复制]【英文标题】:Should I start a helper function with underscore(s)? [duplicate] 【发布时间】:2013-04-27 05:22:31 【问题描述】:

在一个模块中,我应该使用一个、两个或不使用下划线来表示用户应该调用的辅助函数吗?

【问题讨论】:

这里很好地描述了单下划线和双下划线,***.com/questions/1301346/… 【参考方案1】:

可能是一个下划线,但这取决于具体情况。

具体来说,Python 样式指南 (PEP 8) 说:

_single_leading_underscore:弱“内部使用”指标。例如。 from M import * 不会导入名称以下划线开头的对象。

__double_leading_underscore:命名类属性时,调用名称修改(在类 FooBar 中,__boo 变为 _FooBar__boo;见下文)。

另请参阅此问题以获得更长的答案: What is the meaning of a single- and a double-underscore before an object name?

【讨论】:

双下划线在模块中有什么特别的作用?与单下划线有何不同? 是的,当它是类的一部分时 - 它会触发名称修改。请参阅文档以获取完整说明:docs.python.org/2/tutorial/… 广义上讲,你使用它主要是为了防止子类轻易地重写方法。【参考方案2】:

PEP-8, the Python Style Guide,建议使用单个前导下划线。

识别以下使用前导或尾随下划线的特殊形式(这些通常可以与任何大小写约定结合使用):

_single_leading_underscore:弱“内部使用”指标。例如。 from M import * 不会导入名称以下划线开头的对象。 ...

【讨论】:

以上是关于我应该用下划线开始一个辅助函数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

solidedge st3 更换已有工程图的模板及辅助零件如何应用

我可以在 Hibernate 实体类中有一个辅助/方便的方法吗? [复制]

dplyr 的选择辅助函数 Everything() 与复制有何不同?

Kotlin:子构造函数如何使用其父构造函数的辅助构造函数?

IPython 的怎么样? (问号)操作员真的有效吗?

Kotlin二级构造函数