小编典典

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

all

这种“下划线”似乎经常出现,我想知道这是否是 Python 语言的要求,或者仅仅是约定的问题?

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


阅读 236

收藏
2022-03-13

共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 本身保留的:“永远不要发明这样的名称;仅按照文档说明使用它们”。

2022-03-13