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