Python变量名称前缀单个下划线的含义是什么?
Python变量名称可以以单个下划线开头。这样做是为了表示变量名称是一个私有变量,应该看作是一个在任何时候都可能更改的实现细节。程序员可以假设带有单个下划线的变量被保留用于内部使用。
半私有变量建议使用单个下划线,全私有变量建议使用双下划线。
总之,简单来说,单个下划线前缀的变量是“内部使用”的标识。例如,从M导入*排除了以下划线开头的名称对象。
阅读更多:Python 教程
语法
Python变量名称前缀单个下划线的语法如下:
_名称
示例1
在下面的示例中,通过在buzz变量前添加单个下划线,将其设为私有变量。这种方法仍然允许我们在实例化此类并尝试访问_buzz变量时访问它。因此,它被称为“弱私有指示符”。
class Python:
def __init__(self):
self.fee = 37
self._buzz = 76
object = Python()
print(object.fee)
print(object._buzz)
输出
以下是上述代码的输出:
37
76
示例2
以下是单个下划线(_v)示例:
class Sports:
def __init__(self):
self.name = 'Cricket'
self._player = 'Sachin Tendulkar'
输出
以下是尝试访问“name”和“player”的代码输出-
>>> s = Sports()
>>> s.name
'Cricket'
>>> s._player
'Sachin Tendulkar'
注意 - 访问单个下划线变量并没有受到单个下划线的限制。但是,单个下划线会影响从模块导入的名称。
示例3
在untitled.py文件中编写以下代码:
# 文件名是“untitled.py”
def function():
return "programming"
def _private_function():
return35
输出
如果从untitled.py导入所有方法和名称,则Python不会导入以单个下划线开头的名称。
以下是上述代码的输出:
>>> from untitled import *
>>> function()
'programming'
>>> _private_function()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_private_function' is not defined
为避免上述错误,请正常导入模块。
>>> import untitled
>>> untitled.function()
'programming'
>>> untitled._private_function()
35
注意 − 单个前置下划线仅用于内部使用。
Example-4
以下代码演示了双前置下划线和单前置下划线前缀之间的区别。
class Python():
def __init__(self):
self.__FullPrivate = "编码"
self._SemiPrivate = "程序"
p = Python()
print ('p._SemiPrivate')
print ('p.__FullPrivate')
输出
以下是上述代码的输出:
p._SemiPrivate
p.__FullPrivate