Python 中的下划线Underscores有四种特殊用法。其中一些是为了提高代码可读性而约定俗成的。有些是我们必须知道的特殊功能。这四种情况是:
本篇文章将讨论所有这些下划线,以帮助您完全理解如何在 Python 中使用下划线underscores。
有时,如果一个数字number太长,要数出这个数字有多少位数就很难,也很枯燥。例如,如果有一个变量 a=1000000000000
, a
中有多少个零?
幸运的是,Python 为我们提供了一种非常简单的方法,在整数integral、浮点数floating-point和复数complex字面量中使用下划线underscores作为数字分组的视觉分隔符visual separators。如果我们需要定义一个长数字,不要忘记使用下划线,这样会更方便。
a = 1_000_000_000_000
print(a) # 1000000000000
上述 a=1_000_000_000_000
的说法与 a=1000000000000
完全相同。您想用哪种方式定义 a
呢?
有时,容器container(列表list/元组tuple等)中的部分值是无用的useless。我们可以使用下划线来underscore忽略ignore它们。
L = [1, 3, 5, 7]
a, _, b, _ = L
print(a, b) # 1 5
如上面的代码所示,我们需要获取 L
的第一个和第三个值,并将它们赋值给变量 a
和 b
。同时,第二个和最后一个值是无用的。我们只需使用 _
忽略它们。
注意:这种用法只是一种惯例convention。我们可以使用任何其他名称来实现这一目的。但使用下划线underscore是最好的选择,可以避免歧义ambiguity并让其他开发人员容易理解。
这是 Python 解释器的一个有趣的小技巧。我们可以使用一个下划线简单地获取最后一个表达式的值last expression’s value。
>>> 5+6
11
>>> _
11
下划线常用于变量variable名、类class名和函数function名。例如
first_name = 'Zhang'
在定义变量 first_name
时,我们使用了 _
使其更加易读。
除了在名称中间位置使用下划线underscores外,我们还应该知道四种特殊的命名模式:
_var
__var
var_
__var__
在面向对象编程object-oriented programming中,有三种类型的类成员class members:
class Student:
def __init__(self, name, age, grade):
self.name = name # public member
self._age = age # protected member
self.__grade = grade # private member
关于前置下划线有两个提示:
有时,我们会为变量variable想一个好名字,但不幸的是,这个名字与 Python 关键字keywords或内置变量built-ins相冲突。我们可以使用一个下划线underscore后置来避免歧义。例如
list_ = [1,2,3] # good naming style
list = [2,3,4] # bad name; has ambiguity with Python keyword
这个约定用于 Python 类的特殊special变量variables或方法methods(所谓的 “魔法方法magic method”),例如 __init__()
方法。我们只需要知道 Python 魔法方法magic method使用了这个约定convention,并避免这样命名我们的变量variables或方法methods。
一个优秀的开发者应该遵循常用的代码约定并关注细节。在 Python 中正确使用下划线underscores就是一个好习惯good habit。