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