Python标识符/关键字

一、标识符

Python 标识符(也称为名称)的语法基于 Unicode 标准附件 UAX-31,并进行了下文定义的细化和修改,与 Python 2.x 一样,在 ASCII 范围内(U+0001..U+007F),有效标识符字符包括:大小写字母 A 至 Z、下划线 _、数字 0 至 9,但不能以数字开头。

Python 3.0 引入了 ASCII 之外的更多字符,这些字符的分类使用 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:与Other_ID_Start 一样。

在解析时,所有标识符都会被转换为规范形式 NFKC;标识符的比较都是基于 NFKC。

二、关键字

以下标识符为保留字,也称为关键字,注意不能用于普通标识符。关键字的拼写必须与这里列出的完全一致:

False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield

三、软关键字

3.10 新版功能中,某些标识符仅在特定上下文中被保留。这些标识符被称为软关键字。例如,match、case、type 和 _ 等标识符在特定上下文中具有关键字的语义,但这种区分是在解析器层级完成的,而不是在分词的时候。作为软关键字,它们能够在用于相应语法的同时仍然保持与用作标识符名称的现有代码的兼容性。

match, case 和 _ 是在 match 语句中使用。 type 是在 type 语句中使用。在 3.12 版更改: type 现在是一个软关键字。

四、保留标识符类

某些标识符类(除了关键字)具有特殊含义。这些类的命名模式以下划线字符开头,并以 _* 下划线结尾;不会被 from module import * 所导入。在 match 语句内部的 case 模式中,_ 是一个 软关键字,它表示 通配符。

在此之外,交互式解释器会将最后一次求值的结果放到变量 _ 中。 (它与 print 等内置函数一起被存储于 builtins 模块。)在其他地方,_ 是一个常规标识符。 它常常被用来命名 "特殊" 条目,但对 Python 本身来说毫无特殊之处。

双下划线(*)系统定义的名称,通常简称为 "dunder"。这些名称由解释器及其实现(包括标准库)定义。有关现有系统定义名称的详细论述,请参阅特殊方法名称等章节。Python 未来版本中还将定义更多此类名称。在任何情况下,任何不显式遵循 * 名称的文档用法都可能导致无警告提示的错误。

单下划线(_*)是类的私有名称。在类定义时,此类名称以一种混合形式重写,以避免基类及派生类的 "私有" 属性之间产生名称冲突。

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录