2.3. 标识符和关键字
标识符 (或者叫做 名称) 由以下词法定义进行描述。
Python 中的标识符语法是基于 Unicode 标准附件 UAX-31,并加入了下文所定义的细化与修改;更多细节还可参见 PEP 3131 。
在 ASCII 范围内 (U+0001..U+007F),可用于标识符的字符与 Python 2.x 一致: 大写和小写字母 A
至 Z
,下划线 _
以及数字 0
至 9
,但不可以数字打头。
Python 3.0 引入了 ASCII 范围以外的额外字符 (见 PEP 3131)。这些字符的分类使用包含于 unicodedata
模块中的 Unicode 字符数据库版本。
标识符的长度没有限制。对大小写敏感。
- identifier ::=
xid_start
xid_continue
*- id_start ::= <all characters in general categories Lu, Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the Other_ID_Start property>
- id_continue ::= <all characters in
id_start
, plus characters in the categories Mn, Mc, Nd, Pc and others with the Other_ID_Continue property>- xid_start ::= <all characters in
id_start
whose NFKC normalization is in "id_start xid_continue*">- xid_continue ::= <all characters in
id_continue
whose NFKC normalization is in "id_continue*">
上文所用 Unicode 类别码的含义:
Lu - 大写字母
Ll - 小写字母
Lt - 词首大写字母
Lm - 修饰字母
Lo - 其他字母
Nl - 字母数字
Mn - 非空白标识
Mc - 含空白标识
Nd - 十进制数字
Pc - 连接标点
Other_ID_Start - 由 PropList.txt 定义的显式字符列表,用于支持向后兼容
Other_ID_Continue - 同上
所有标识符在解析时会被转换为规范形式 NFKC;标识符的比较都是基于 NFKC。
Unicode 4.1 中所有可用的标识符字符列表可参见以下非正式 HTML 文件 https://www.unicode.org/Public/13.0.0/ucd/DerivedCoreProperties.txt