Skip to content

词法单元:字面量 - 数据的基本表示

字面量(Literals)是编程语言中用于直接表示固定值的基本词法单元。可以将它们视为程序中的常量值,直接嵌入在源代码中,无需计算即可确定其值。掌握字面量对于理解 Python 代码至关重要,因为它们是初始化变量、进行比较和构建更复杂数据结构的基础。

Python 提供了多种类型的字面量,每种类型用于表示不同种类的数据。下面我们来详细了解 Python 中的各种字面量类型。

数字字面量: 数值的表达方式

数字字面量用于表示数值。Python 支持整数、浮点数和虚数三种类型的数字字面量。

整数字面量:没有小数点的数字

整数字面量表示没有小数部分的整数。Python 允许使用不同的进制(基数)来表示整数:

i. 十进制(基数-10)整数:

这是我们日常生活中最常用的数字表示方式。十进制整数字面量由一个或多个数字(0-9)组成。需要注意的是,除了数字 0 本身之外,十进制整数不能以 0 开头。

python
# 有效的十进制整数字面量
34
3283298
864
0

# 无效的十进制整数字面量
# 092  # 报错:不允许前导零

ii. 二进制(基数-2)整数:

二进制整数以 0b0B 开头,后跟二进制数字 0 和 1。二进制在计算机科学中非常重要,因为它是计算机内部表示数据的方式。

例如,十进制数 27 可以表示为二进制整数 0b11011

python
binary_number = 0b11011
print(binary_number)  # 输出: 27

iii. 八进制(基数-8)整数:

八进制整数以 0o0O 开头,后跟八进制数字 0 到 7。

例如,十进制数 27 可以表示为八进制整数 0o33

python
octal_number = 0o33
print(octal_number)  # 输出: 27

iv. 十六进制(基数-16)整数:

十六进制整数以 0x0X 开头,后跟数字 0-9 和字母 A-F(或 a-f,不区分大小写)。十六进制常用于表示内存地址和颜色代码。

例如,十进制数 27 可以表示为十六进制整数 0x1B0x1b

python
hexadecimal_number = 0x1B
print(hexadecimal_number)  # 输出: 27

总而言之,同一个数值可以用不同的进制来表示,例如十进制 27 可以写成 27 (十进制), 0b11011 (二进制), 0o33 (八进制), 或 0x1B (十六进制)。Python 会自动将它们转换为十进制进行处理。

整数字面量中的下划线:

为了提高可读性,Python 允许在整数字面量中使用下划线 _ 来对数字进行分组。下划线可以出现在数字之间,也可以出现在基数说明符(如 0b)之后。Python 在确定字面量的实际数值时会忽略下划线。

python
large_number = 10_000_000  # 1000万,更容易阅读
binary_with_underscores = 0b_1111_0000  # 二进制数,用下划线分隔
hex_with_underscores = 0xAF_12_BC  # 十六进制数
print(large_number, binary_with_underscores, hex_with_underscores)

浮点数字面量:带小数点的数字

浮点数字面量用于表示实数,也就是带有小数部分的数字。它们可以包含小数部分和/或指数部分。

  • 小数部分: 指的是小数点(.)后面的数字。
python
3.14
0.5
.75  # 等同于 0.75
5.
  • 指数部分: 使用字母 eE 后跟一个可选的符号(+-)和一个整数来表示。指数部分表示将前面的数乘以 10 的多少次幂。
python
3.14E2  # 等同于 3.14 * 10^2 = 314.0
2.5e-3  # 等同于 2.5 * 10^-3 = 0.0025

虚数字面量:复数的组成部分

为了处理复数,Python 引入了虚数字面量。虚数字面量由一个实数或整数后跟字母 jJ 构成,其中 jJ 代表单位虚数(即根号 -1)。

python
3.5j
15.j
12j
.005j
3e100j
3.5e-10j

重要注意事项:

  • 复数字面量: Python 没有直接表示复数的字面量。复数是通过将实数(整数或浮点数字面量)与虚数(虚数字面量)组合成表达式来创建的。例如,1 + 2j 表示一个复数,其中 1 是实部,2j 是虚部。
python
complex_number = 1 + 2j
print(complex_number)  # 输出: (1+2j)
  • 负号: 数字字面量本身不包含负号 (-)。负号实际上是一个一元运算符,用于对字面量取负。例如,在表达式 -3.14 中,3.14 是字面量,而 - 是一个运算符。

布尔字面量: 真与假

TrueFalse 是 Python 中的布尔字面量,用于表示真值和假值。它们是 Python 中仅有的两个布尔值,在逻辑运算和条件判断中扮演着关键角色。

python
is_true = True
is_false = False

if is_true:
    print("This is true")
else:
    print("This is false")

字符串字面量: 文本的表示

字符串字面量用于表示文本数据。在 Python 中,可以使用以下方式来定义字符串:

  • 单引号: 'Hello, world!'
  • 双引号: "Hello, world!"
  • 三引号: '''This is a multi-line string'''"""This is also a multi-line string"""

三引号字符串可以跨越多行,方便表示包含换行符的文本。

python
single_quoted_string = 'This is a string in single quotes.'
double_quoted_string = "This is a string in double quotes."
multi_line_string = """This is a
string that spans multiple lines."""

print(single_quoted_string)
print(double_quoted_string)
print(multi_line_string)

转义字符:

反斜杠 (\) 字符在字符串中具有特殊含义,用于转义其他字符。转义字符允许我们在字符串中包含一些无法直接输入的字符,例如换行符、制表符和引号。

转义序列含义
\\反斜杠 (\)
\'单引号 (')
\"双引号 (")
\n换行符 (newline)
\t制表符 (tab)
\r回车符 (carriage return)
\b退格符 (backspace)
\f换页符 (form feed)
\v垂直制表符 (vertical tab)
\a响铃符 (alert/bell)
python
string_with_escapes = "This string contains a newline character: \nAnd a tab character: \t"
print(string_with_escapes)

在字符串中嵌入引号:

虽然可以使用 \'\" 来转义引号,但更简单的方法是在单引号字符串中嵌入双引号,反之亦然。

python
string1 = 'My name is "Python".'
string2 = "Python's World"
print(string1)
print(string2)

Unicode 字符:

字符串字面量支持 Unicode 字符,可以使用 \u 转义序列后跟 4 位十六进制 Unicode 码来指定。

python
print("E = mc\u00B2")  # 输出: E = mc²

\u00B2 表示 Unicode 字符“上标二”。Unicode 是一种国际标准,用于表示世界上几乎所有的字符。

特殊字面量: None

None 是 Python 中的一个特殊字面量,用于表示空值或缺少值。它类似于其他语言中的 nullnilNone 不同于 00 是一个表示数值零的整数,而 None 表示没有任何值。

python
my_variable = None

if my_variable is None:
    print("The variable is None")
else:
    print("The variable has a value")

当一个变量被赋值为 None 时,它表示该变量当前没有指向任何对象。

字面量集合(Displays):

Python 允许使用特殊的语法来创建字面量集合,也称为“displays”。这些语法可以用来快速创建列表、集合和字典等容器。

  • 列表(List): 使用方括号 [] 创建一个有序的元素集合。

    python
    my_list = ['a', 'b', 'c']
    print(my_list)
  • 集合(Set): 使用花括号 {} 创建一个无序且不包含重复元素的集合。

    python
    my_set = {'a', 'b', 'c'}
    print(my_set)
  • 字典(Dictionary): 使用花括号 {} 创建一个键值对的集合。

    python
    my_dictionary = {'a': 1, 'b': 2, 'c': 3}
    print(my_dictionary)

我们将在后续章节中更详细地介绍列表、集合和字典。

通过理解和掌握这些字面量,你将能够更好地理解和编写 Python 代码,并能够更有效地处理各种数据类型。字面量是 Python 编程的基础,是构建更复杂程序的重要组成部分。