Skip to content

词法单元:字面量

字面量是源代码中表示固定或常量值的词法单元。它们通常用于赋值语句中初始化变量或用于比较表达式。

Python 中可用的各种字面量类型如下:

数字字面量

数字字面量用于在源代码中表示数值。它们可以是三种类型——整数、浮点数和虚数。

整数字面量

整数字面量是没有小数部分的数字。

在 Python 中,整数字面量可以用四种进制(基数)表示:

i. 十进制或基数-10 整数

十进制整数字面量由一个或多个数字(0-9)组成,并且除了数字 0 本身外,不能有任何前导零。

示例基数-10 整数:

python
34
3283298
864
0

092 不是有效的十进制整数字面量,因为第一个非零数字 9 前面有一个零。

ii. 二进制或基数-2 整数

二进制整数或基数-2 整数以 0b0B 开头,后跟二进制数字 0-1

例如,27 可以写成二进制整数字面量 0b11011

iii. 八进制或基数-8 整数

八进制整数或基数-8 整数以 0o0O 开头,后跟八进制数字 0-7

例如,27 可以写成八进制整数字面量 0o33

iv. 十六进制或基数-16 整数

十六进制整数或基数-16 整数以 0x0X 开头,后跟数字 0-9 或字母 A-F(不区分大小写)。

例如,27 可以写成十六进制整数字面量 0x1B0x1b

因此,可以看出数字 27 可以在程序中写为 27(十进制)、0b11011(二进制)、0o33(八进制)或 0x1B(十六进制)。

整数字面量中的下划线

整数字面量中也允许使用可选字符 _(下划线)来分组数字以增强可读性。

下划线可以出现在数字之间,以及像 0o 这样的基数说明符之后。

在确定字面量的实际数值时,它们会被忽略。

一些有效的下划线用法是 - 10_00_00_0000b_1110_01010x23_123

浮点数字面量

浮点数字面量是源代码中存在的实数。它们包含小数部分和/或指数部分。

小数部分包括小数点(.)后的数字。

示例浮点数字面量:

3.4
.4
8.
3.4E2
3.4e-2

在上面的示例中,.4 等同于 0.48. 等同于 8.0

指数部分可以通过字母 eE 识别,后跟一个可选的符号(+-)和数字(0-9)。这个指数等同于将实数乘以 10 的幂。

例如,3.4E2 等同于 3.4 x 10^2340.0,而 3.4e-2 等同于 3.4 x 10^-2.034

虚数字面量

为了指定复数并执行复数数学运算,Python 支持虚数字面量,它由实数或整数后跟字母 jJ 给出,jJ 代表单位虚数。

示例虚数字面量:

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

注意事项

在 Python 中,

  • 没有像复数字面量这样的专门字面量。复数实际上在程序中使用包含实数(整数/浮点数字面量)和虚数(虚数字面量)的表达式来表示。例如,1 + 2j 由一个整数字面量 (1) 和一个虚数字面量 (2j) 组成。
  • 数字字面量不包括负号 (-)。- 实际上是一个一元运算符,它与数字字面量结合表示负数。例如,在 -3.14 中,数字字面量是 3.14- 是一个运算符。

布尔字面量

保留字 TrueFalse 也是布尔字面量,可用于在程序中指定真值。

字符串字面量

字符串字面量是文本,可以在 Python 中以多种方式指定:

  • 单引号:'python'
  • 双引号:"python"
  • 三引号:'''Triple python''', """Three python"""

三引号字符串也可以跨越多行。

示例:

python
s = "I am a String"

s1 = """A
multiline
String"""

s2 = '''Also a
multiline
String'''

反斜杠(\)字符可用于字符串字面量中,以转义那些具有特殊含义的字符,例如换行符、换行符或引号字符。

转义序列含义
\\反斜杠 (\)
\'单引号 (')
\"双引号 (")
\aASCII 响铃 (BEL)
\bASCII 退格 (BS)
\fASCII 换页 (FF)
\nASCII 换行 (LF)
\rASCII 回车 (CR)
\tASCII 水平制表符 (TAB)
\vASCII 垂直制表符 (VT)

尽管 \'\" 可用于指定引号字符,但 Python 允许在单引号字符串中嵌入双引号 ('My name is "Python".'),以及在双引号字符串中嵌入单引号 ("Python's World")。

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

python
>>> print("E = mc\u00B2")
E = mc²

在上面的示例中,\u00B2 是表示“上标二”的 Unicode 字符。

特殊字面量

None 是一个特殊的字面量,用于表示值的缺失。

它不应与 0 混淆,因为 0 是一个具有确定有限值的整数字面量,而 None 意味着“无”或“空”。

python
>>> a = None
>>> a
>>>

在上面的示例中,Python shell 不显示 a 的任何值,因为它被赋值为 NoneNone 没有值。

字面量集合

Python 提供了在源代码中使用一种称为**"displays"** (显示) 的特殊语法来指定字面量集合的功能。

可以使用这种语法创建专门的容器,如列表、集合和字典。

下面提供了一些字面量集合(显示)的示例:

  • 列表 (List)a = ['a', 'b', 'c']
  • 集合 (Set)a = {'a', 'b', 'c'}
  • 字典 (Dictionary)a = {'a':1, 'b':2, 'c':3}

列表、集合和字典将在后面的章节中详细介绍。