Python 库手册:keyword 关键字查询

keyword 模块是 Python 标准库中一个轻量级的内省工具,专门用于查询和判断 Python 的关键字(keywords)。

关键字是 Python 语言保留的标识符,具有特殊的语法意义,不能用作变量名、函数名或其他用户定义的标识符。例如:if、for、class、def 等。

该模块在语法学习、代码分析、编译器开发、静态检查工具等场景中非常有用。

常见应用场景:

(1)学习 Python 语法:查看当前版本的所有关键字列表。

(2)代码检查:判断某个字符串是否为关键字。

(3)工具开发:在代码高亮、自动补全或 IDE 插件中识别关键字。

(4)版本兼容性:不同 Python 版本关键字集合可能有差异,可通过该模块检测。

◆ ◆ ◆

核心概念

1、关键字(Keyword)

Python 语言保留字,不能作为普通标识符使用。

例如:True、False、None、import、lambda 等。

2、关键字集合

keyword.kwlist 提供了当前解释器版本的关键字列表。

随 Python 版本演进,关键字可能增减(如 match、case 在 3.10 引入)。

3、判断函数

keyword.iskeyword(s):判断字符串是否为关键字。

keyword.issoftkeyword(s):判断是否为"软关键字"(Python 3.9+)。

4、软关键字(Soft Keyword)

软关键字是在特定语境下才具有特殊含义的标识符。

例如,match 和 case 在 Python 3.10 的模式匹配(Pattern Matching)语法中是关键字,但在其他地方仍可作为变量名使用。

这与普通关键字不同,普通关键字在任何场景下都保留,不能作为标识符。

◆ ◆ ◆

应用举例

例 1:获取所有关键字

java 复制代码
import keyword
print(keyword.kwlist)

输出结果会随 Python 版本不同而略有差异(以下为 Python 3.11 示例):

javascript 复制代码
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', 'match', 'case']

例 2:判断字符串是否为关键字

python 复制代码
import keyword
print(keyword.iskeyword("for"))     # Trueprint(keyword.iskeyword("hello"))   # False

例 3:判断软关键字(Python 3.9+)

python 复制代码
import keyword
print(keyword.issoftkeyword("match"))   # True (软关键字,用于模式匹配)print(keyword.issoftkeyword("hello"))   # False

例 4:避免关键字命名冲突

python 复制代码
import keyword
name = "class"if keyword.iskeyword(name):    print(f"'{name}' 是 Python 关键字,不能用作变量名!")

◆ ◆ ◆

常用函数与属性速览

keyword.kwlist

当前版本 Python 的所有关键字列表。

keyword.iskeyword(s)

判断字符串 s 是否为关键字。

返回:布尔值。

keyword.issoftkeyword(s)

判断字符串 s 是否为软关键字(soft keyword)。

返回:布尔值。

说明:软关键字在某些上下文中有特殊意义,但可以在其他场景下作为普通标识符使用。

📘 小结

keyword 模块提供了关键字集合与判断接口,是语法分析、代码检查和工具开发的重要辅助模块。

通过 kwlist、iskeyword() 和 issoftkeyword(),可快速获取关键字信息并避免命名冲突。

"点赞有美意,赞赏是鼓励"

相关推荐
VidDown2 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频4 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林5 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
pride.li6 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook6 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
顽疲7 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
康小旺7 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
启观川7 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦8 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python