一尘不染

为什么某些函数在函数名称前后都有下划线“ __”?

python

这种“强调”似乎经常发生,我想知道这是否是Python语言中的要求,还是仅仅是一个约定问题?

另外,有人可以说出并解释哪些函数倾向于带有下划线,以及为什么(__init__例如)?


阅读 305

收藏
2021-01-20

共1个答案

一尘不染

Python PEP 8-Python代码样式指南

[描述性:命名样式](https://www.python.org/dev/peps/pep-0008/#descriptive-naming-

styles)

可以识别以下使用前划线或后划线的特殊形式(通常可以将它们与任何大小写惯例结合使用):

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

  • single_trailing_underscore_:按惯例用于避免与Python关键字发生冲突,例如

Tkinter.Toplevel(master, class_='ClassName')

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

* __double_leading_and_trailing_underscore__:位于用户控制的名称空间中的“魔术”对象或属性。例如__init__
__import____file__。请勿发明此类名称;仅按记录使用它们。

请注意,带下划线和双下划线的名称本质上是为Python本身保留的:“切勿发明此类名称;仅按文档说明使用它们”。

2021-01-20