词法单元:字面量
字面量是源代码中表示固定或常量值的词法单元。它们通常用于赋值语句中初始化变量或用于比较表达式。
Python 中可用的各种字面量类型如下:
数字字面量
数字字面量用于在源代码中表示数值。它们可以是三种类型——整数、浮点数和虚数。
整数字面量
整数字面量是没有小数部分的数字。
在 Python 中,整数字面量可以用四种进制(基数)表示:
i. 十进制或基数-10 整数
十进制整数字面量由一个或多个数字(0-9
)组成,并且除了数字 0
本身外,不能有任何前导零。
示例基数-10 整数:
34
3283298
864
0
092
不是有效的十进制整数字面量,因为第一个非零数字 9
前面有一个零。
ii. 二进制或基数-2 整数
二进制整数或基数-2 整数以 0b
或 0B
开头,后跟二进制数字 0-1
。
例如,27
可以写成二进制整数字面量 0b11011
。
iii. 八进制或基数-8 整数
八进制整数或基数-8 整数以 0o
或 0O
开头,后跟八进制数字 0-7
。
例如,27
可以写成八进制整数字面量 0o33
。
iv. 十六进制或基数-16 整数
十六进制整数或基数-16 整数以 0x
或 0X
开头,后跟数字 0-9
或字母 A-F
(不区分大小写)。
例如,27
可以写成十六进制整数字面量 0x1B
或 0x1b
。
因此,可以看出数字 27
可以在程序中写为 27
(十进制)、0b11011
(二进制)、0o33
(八进制)或 0x1B
(十六进制)。
整数字面量中的下划线
整数字面量中也允许使用可选字符 _
(下划线)来分组数字以增强可读性。
下划线可以出现在数字之间,以及像 0o
这样的基数说明符之后。
在确定字面量的实际数值时,它们会被忽略。
一些有效的下划线用法是 - 10_00_00_000
、0b_1110_0101
、0x23_123
。
浮点数字面量
浮点数字面量是源代码中存在的实数。它们包含小数部分和/或指数部分。
小数部分包括小数点(.
)后的数字。
示例浮点数字面量:
3.4
.4
8.
3.4E2
3.4e-2
在上面的示例中,.4
等同于 0.4
,8.
等同于 8.0
。
指数部分可以通过字母 e
或 E
识别,后跟一个可选的符号(+
或 -
)和数字(0-9
)。这个指数等同于将实数乘以 10
的幂。
例如,3.4E2
等同于 3.4 x 10^2
或 340.0
,而 3.4e-2
等同于 3.4 x 10^-2
或 .034
。
虚数字面量
为了指定复数并执行复数数学运算,Python 支持虚数字面量,它由实数或整数后跟字母 j
或 J
给出,j
或 J
代表单位虚数。
示例虚数字面量:
3.5j
15.j
12j
.005j
3e100j
3.5e-10j
注意事项
在 Python 中,
- 没有像复数字面量这样的专门字面量。复数实际上在程序中使用包含实数(整数/浮点数字面量)和虚数(虚数字面量)的表达式来表示。例如,
1 + 2j
由一个整数字面量 (1
) 和一个虚数字面量 (2j
) 组成。 - 数字字面量不包括负号 (
-
)。-
实际上是一个一元运算符,它与数字字面量结合表示负数。例如,在-3.14
中,数字字面量是3.14
,-
是一个运算符。
布尔字面量
保留字 True
和 False
也是布尔字面量,可用于在程序中指定真值。
字符串字面量
字符串字面量是文本,可以在 Python 中以多种方式指定:
- 单引号:
'python'
- 双引号:
"python"
- 三引号:
'''Triple python'''
,"""Three python"""
。
三引号字符串也可以跨越多行。
示例:
s = "I am a String"
s1 = """A
multiline
String"""
s2 = '''Also a
multiline
String'''
反斜杠(\
)字符可用于字符串字面量中,以转义那些具有特殊含义的字符,例如换行符、换行符或引号字符。
转义序列 | 含义 |
---|---|
\\ | 反斜杠 (\ ) |
\' | 单引号 (' ) |
\" | 双引号 (" ) |
\a | ASCII 响铃 (BEL) |
\b | ASCII 退格 (BS) |
\f | ASCII 换页 (FF) |
\n | ASCII 换行 (LF) |
\r | ASCII 回车 (CR) |
\t | ASCII 水平制表符 (TAB) |
\v | ASCII 垂直制表符 (VT) |
尽管 \'
和 \"
可用于指定引号字符,但 Python 允许在单引号字符串中嵌入双引号 ('My name is "Python".'
),以及在双引号字符串中嵌入单引号 ("Python's World"
)。
字符串字面量还支持 Unicode 字符,可以使用 \u
转义序列后跟 4 位 Unicode 码来指定。
>>> print("E = mc\u00B2")
E = mc²
在上面的示例中,\u00B2
是表示“上标二”的 Unicode 字符。
特殊字面量
None
是一个特殊的字面量,用于表示值的缺失。
它不应与 0
混淆,因为 0
是一个具有确定有限值的整数字面量,而 None
意味着“无”或“空”。
>>> a = None
>>> a
>>>
在上面的示例中,Python shell 不显示 a
的任何值,因为它被赋值为 None
,None
没有值。
字面量集合
Python 提供了在源代码中使用一种称为**"displays"** (显示) 的特殊语法来指定字面量集合的功能。
可以使用这种语法创建专门的容器,如列表、集合和字典。
下面提供了一些字面量集合(显示)的示例:
- 列表 (List):
a = ['a', 'b', 'c']
- 集合 (Set):
a = {'a', 'b', 'c'}
- 字典 (Dictionary):
a = {'a':1, 'b':2, 'c':3}
列表、集合和字典将在后面的章节中详细介绍。