Python 变量名前加单下划线是什么意思?
Python 变量名可以以单下划线开头。这是一种约定,表示该变量名是私有变量。它应该被视为随时可能更改的实现细节。程序员可以认为用单下划线标记的变量是保留供内部使用的。
建议使用单下划线表示半私有变量,使用双下划线表示完全私有变量。
引用 PEP-8;单下划线开头:表示“内部使用”的较弱信号。例如,`from M import *` 会排除名称以下划线开头的对象。
语法
在 Python 变量名前使用单下划线的语法如下:
_name
示例 1
在下面的例子中,通过在 buzz 变量前添加单下划线,将其设置为私有。这种方法仍然允许我们在实例化此类的对象并尝试访问 _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 文件中编写以下代码:
# The file name is ‘untitled.py’ def function(): return "programming" def _private_function(): return 35
输出
如果您从 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
注意 - 单下划线仅用于内部使用。
示例 4
以下代码演示了双下划线和单下划线前缀的区别。
class Python(): def __init__(self): self.__FullPrivate = "Coding" self._SemiPrivate = "Programs" p = Python() print ('p._SemiPrivate') print ('p.__FullPrivate')
输出
以下是上述代码的输出:
p._SemiPrivate p.__FullPrivate
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP