跳到主要内容

简述Python中单下划线和双下划线 ?

参考答案:

在Python中,单下划线(_)和双下划线(__)通常用于变量和方法的命名,但它们各自有特定的含义和用途。

  1. 单下划线(_

    • 在交互式解释器(Interactive Interpreter)中,单下划线_用于存储上一个表达式的结果。
    • 在变量名中,单下划线通常用作一个“内部使用”或“私有”的标记,但它并不真正使变量或方法变为私有。这只是一个约定,告诉其他开发者这个变量或方法主要是为了内部使用,而不是作为公共API的一部分。
    • 在Python 2中,如果变量名以单下划线开头,它不会被from module import *语句导入。但在Python 3中,这个行为已经改变,from module import *不再导入以下划线开头的对象。
  2. 双下划线(__

    • 名称修饰(Name Mangling):当一个变量名以双下划线开头并且不以双下划线结尾时(例如__private_var),Python会对其进行名称修饰(Name Mangling)。这意味着解释器会修改这个变量的名称,使其在当前类的作用域内变为私有。具体做法是,在变量名前后都加上类名,并且把双下划线替换为单下划线。例如,在类MyClass中定义的__private_var,在类外部看起来就像是_MyClass__private_var
    • 特殊方法:双下划线也常用于某些特殊方法的命名,如__init____call____getitem__等。这些方法有特殊的含义,当与相应的操作一起使用时,Python会自动调用它们。

需要注意的是,Python并没有真正的“私有”变量或方法。即使使用双下划线进行了名称修饰,变量或方法仍然可以通过一些技巧在类外部访问。因此,这些下划线主要是作为一种约定,提醒开发者不要直接访问这些变量或方法,除非有明确的理由。