简述Python中单下划线和双下划线 ?
参考答案:
在Python中,单下划线(_
)和双下划线(__
)通常用于变量和方法的命名,但它们各自有特定的含义和用途。
-
单下划线(
_
):- 在交互式解释器(Interactive Interpreter)中,单下划线
_
用于存储上一个表达式的结果。 - 在变量名中,单下划线通常用作一个“内部使用”或“私有”的标记,但它并不真正使变量或方法变为私有。这只是一个约定,告诉其他开发者这个变量或方法主要是为了内部使用,而不是作为公共API的一部分。
- 在Python 2中,如果变量名以单下划线开头,它不会被
from module import *
语句导入。但在Python 3中,这个行为已经改变,from module import *
不再导入以下划线开头的对象。
- 在交互式解释器(Interactive Interpreter)中,单下划线
-
双下划线(
__
):- 名称修饰(Name Mangling):当一个变量名以双下划线开头并且不以双下划线结尾时(例如
__private_var
),Python会对其进行名称修饰(Name Mangling)。这意味着解释器会修改这个变量的名称,使其在当前类的作用域内变为私有。具体做法是,在变量名前后都加上类名,并且把双下划线替换为单下划线。例如,在类MyClass
中定义的__private_var
,在类外部看起来就像是_MyClass__private_var
。 - 特殊方法:双下划线也常用于某些特殊方法的命名,如
__init__
、__call__
、__getitem__
等。这些方法有特殊的含义,当与相应的操作一起使用时,Python会自动调用它们。
- 名称修饰(Name Mangling):当一个变量名以双下划线开头并且不以双下划线结尾时(例如
需要注意的是,Python并没有真正的“私有”变量或方法。即使使用双下划线进行了名称修饰,变量或方法仍然可以通过一些技巧在类外部访问。因此,这些下划线主要是作为一种约定,提醒开发者不要直接访问这些变量或方法,除非有明确的理由。