Python变量名称前缀单个下划线的含义是什么?

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程