作者:mingrammer
翻译:老齐
与本文相关的图书推荐:《跟老齐学Python:轻松入门》
下划线(
_
)在Python语言中有特殊作用。
在大多数编程语言中,下划线是命名变量或者函数名称时的连字符,但是,在Python语言中,不仅如此。如果你是一名Python程序员,对于诸如
_ in range(10)
,
__init__(self)
之类的下发肯定熟知。
本文将详述下划线(
_
)的使用方法,帮助初学者理解它。
在Python语言中,下划线主要应用在如下5个方面:
- 在交互模式中,保存最近一个表达式的值
- 忽略某个值(“我不重要”)
- 给变量或者函数名称赋予特殊含义
- 作为国际化或本地化的函数命名
- 在数字组成的值中作为分隔符
下面逐一阐述。
用在交互模式中
在Python交互模式总,如果调用
_
,会显示最近的表达式的值。这个功能在标准的交互模式中都有,你也可以在其它Python交互式解析器中使用。
>>> 10
10
>>> _
10
>>> _ * 3
30
>>> _ * 20
600
复制代码
表示忽略某个值
下划线也可以用于表示要忽略某个值。如果你不需要某个值或者该值没什么用,可以用下划线作为相应的变量。
# Ignore a value when unpacking
x, _, y = (1, 2, 3)
# x = 1, y = 3
# Ignore the multiple values. It is called "Extended Unpacking" which is available in only Python 3.x
x, *_, y = (1, 2, 3, 4, 5)
# x = 1, y = 5
# Ignore the index
for _ in range(10):
do_something()
# Ignore a value of specific location
for _, val in list_of_tuple:
do_something()
复制代码
给变量或者函数名称赋予特殊含义
下划线,最多的用途还是在命名中,PEP8是Python开发的公约,它约定了4中命名方式。
单下划线开始
以单下划线开始的变量、函数、方法、类名称,意在声明该对象私有化,按照此预订,使用
from module import *
则无法将相应对象导入。
然而,Python并不支持真正的私有化,所以我们不能强制某对象私有化,从其他模块中也能直接调用它,有时候,我们会说这种私有化的对象是“内部使用的弱指示器”。
_internal_name = 'one_nodule' # private variable
_internal_version = '1.0' # private variable
class _Base: # private class
_hidden_factor = 2 # private variable
def __init__(self, price):
self._price = price
def _double_price(self): # private method