Python 3.12 Key Words引言什么是关键字在 Python 中关键字Keyword是语言语法的一部分是 Python 语言中预先保留的具有特殊含义的标识符。它们像建筑中的钢筋水泥构成了程序的基本结构。这些单词是 Python 语法的一部分用于表示程序的结构、控制流程、逻辑运算等不能用作变量名、函数名、类名或其他自定义标识符否则会导致语法错误。Python 3.12 共有35 个硬关键字和4 个软关键字。硬关键字在任何上下文中都是保留的而软关键字仅在特定语法位置具有特殊含义其他位置仍可作为标识符。本文将系统讲解每个关键字的用途、示例、注意事项以及软关键字的特别之处。主要特点固定含义每个关键字都有特定的语法功能不能被重新定义或赋值除非使用软关键字在特定上下文外。区分大小写所有关键字都是小写的除了True、False、None三个常量首字母大写。数量有限Python 3.12 共有35 个硬关键字和4 个软关键字。语法保留尝试使用关键字作为变量名会引发SyntaxError。关键字的分类类别示例控制流if,elif,else,for,while,break,continue异常处理try,except,finally,raise,assert函数与类def,return,lambda,class,yield逻辑/成员/身份运算and,or,not,in,is导入与别名import,from,as作用域global,nonlocal资源管理with,del异步编程async,await常量True,False,None软关键字match,case,_,type仅在特定上下文中具有特殊含义第一部分硬关键字35 个一、常量与特殊值1.True/False作用布尔类型的两个值True表示真False表示假。注意它们首字母大写在 Python 中True和False是bool类型的单例对象。示例is_python_funTrueis_java_funFalseprint(is_python_funandnotis_java_fun)# True2.None作用表示“空”或“无”的对象常用于表示缺失值、函数默认返回值等。注意None不是空字符串、空列表或 0它是一个单独的类型NoneType。示例deffunc():passprint(func())# None二、逻辑与关系运算3.and作用逻辑与运算符短路求值当左侧为False时直接返回左侧值否则返回右侧值。示例a,b5,0print(a0andb0)# False4.or作用逻辑或运算符短路求值当左侧为True时直接返回左侧值否则返回右侧值。示例nameinput(Name: )orAnonymous5.not作用逻辑非运算符返回布尔值的相反值。示例is_readyFalseifnotis_ready:print(Please wait.)6.in作用成员测试判断元素是否存在于序列、映射或集合中。示例items[1,2,3]print(2initems)# True7.is作用身份比较判断两个变量是否指向同一个对象比较内存地址。注意与不同is比较身份比较值。示例a[1,2];b[1,2]print(aisb)# Falseprint(ab)# True三、条件与循环控制8.if作用条件判断的入口根据表达式真假决定是否执行后续代码块。示例age18ifage18:print(Adult)9.elif作用else if的缩写用于多分支条件判断。示例score85ifscore90:gradeAelifscore80:gradeB10.else作用与if、for、while、try配合当条件不满足或循环正常结束未 break时执行。示例foriinrange(3):passelse:print(Loop finished without break)11.for作用迭代循环遍历可迭代对象列表、元组、字符串等。示例foriinrange(5):print(i)12.while作用条件循环当条件为真时重复执行代码块。示例n0whilen5:print(n)n113.break作用立即终止当前循环for或while跳出循环体。示例foriinrange(10):ifi5:breakprint(i)# 0 1 2 3 414.continue作用跳过本次循环剩余语句立即进入下一次迭代。示例foriinrange(5):ifi%20:continueprint(i)# 1 3四、函数与类定义15.def作用定义函数或方法。示例defadd(a,b):returnab16.return作用从函数中返回一个值并结束函数执行。没有return的函数返回None。示例defsquare(x):returnx*x17.lambda作用创建匿名函数没有名字的内联函数通常用于简单操作。示例squarelambdax:x*xprint(square(5))# 2518.class作用定义类面向对象编程的基础。示例classDog:defbark(self):print(Woof!)五、异常处理19.try作用标记可能引发异常的代码块与except、finally配合使用。示例try:x1/0exceptZeroDivisionError:print(Cannot divide by zero)20.except作用捕获指定类型的异常并执行对应的处理代码。示例如上。21.finally作用无论是否发生异常都会执行的清理代码块例如关闭文件、释放锁。示例try:fileopen(data.txt)finally:file.close()22.raise作用主动抛出异常可以抛出自定义异常或内置异常。示例defset_age(age):ifage0:raiseValueError(Age cannot be negative)returnage23.assert作用断言条件为假时抛出AssertionError用于调试和验证不变量。注意在优化模式-O下assert会被忽略。示例assert225,Math is broken六、导入与别名24.import作用导入模块或包中的成员。示例importmathfromosimportpath25.from作用与import配合指定从哪个模块导入可以导入部分成员。示例如上。26.as作用为导入的模块、异常或上下文管理器起别名简化名称或避免冲突。示例importnumpyasnp七、作用域控制27.global作用在函数内部声明变量为全局作用域允许修改全局变量。示例count0defincrement():globalcount count128.nonlocal作用在嵌套函数中声明变量来自外层非全局作用域用于修改闭包中的变量。示例defouter():x0definner():nonlocalx x1returnxreturninner八、资源管理29.with作用上下文管理器自动管理资源如文件、锁、数据库连接确保正确释放。示例withopen(file.txt,r)asf:contentf.read()# 文件自动关闭30.del作用删除变量、属性或容器中的元素减少引用计数但不会强制立即销毁对象由垃圾回收决定。示例lst[1,2,3]dellst[1]# 删除第二个元素dellst# 删除变量名九、生成器与占位31.yield作用在函数中使用使函数成为生成器每次yield返回一个值并暂停状态下次next()继续执行。示例defcount_up_to(n):i0whilein:yieldi i132.pass作用空语句什么都不做用作语法占位符例如在空函数、空类中。示例defplaceholder():pass十、异步编程33.async作用定义异步函数协程或异步上下文管理器、异步迭代器。示例asyncdeffetch_data():awaitasyncio.sleep(1)returndata34.await作用等待异步任务完成只能在async函数中使用。示例如上。第二部分软关键字4 个软关键字Soft Keywords是 Python 3.10 之后引入的概念。它们在特定语法位置具有特殊含义其他位置仍可作为普通标识符。这一设计保证了向后兼容性允许新语法引入而不破坏旧代码。1.match作用启动结构模式匹配Pattern Matching类似于其他语言中的switch-case但功能更强大。注意仅在match语句开头作为关键字其他地方可作为变量名。示例defdescribe(value):matchvalue:case0:returnzerocase1:returnonecase_:returnother2.case作用在match语句中定义匹配分支每个分支可以匹配字面量、类型、解构等模式。示例如上。3._作用在match语句中作为通配符模式匹配任何值但不绑定变量。在其他上下文中它只是一个普通标识符通常用作“不关心”的变量名例如循环变量。示例for_inrange(5):print(Hello)4.type作用PEP 695 引入用于定义类型别名Type Alias。例如type Point tuple[float, float]。在非此上下文中type仍然是内置函数返回对象的类型。示例typePointtuple[float,float]# 定义类型别名p:Point(3.0,4.0)print(type(p))# 调用内置 type 函数返回 class tuple第三部分 总结1. 关键字与保留字的关系硬关键字保留字绝对不能用作标识符。软关键字 只在特定上下文保留其他位置可以自由使用。例如你可以写match 123只要后面不跟在match语句中。2. 为什么需要软关键字向后兼容例如match在 3.10 之前可能被用作变量名如果直接设为硬关键字会破坏大量现有代码。软关键字完美解决了这个问题。语言平滑演进type原本是内置函数现在也能作为类型别名语句但旧代码中的type(obj)依然有效。3. 关键字的实现Python 解释器CPython的词法分析器在扫描源代码时会将标识符与硬关键字列表匹配若匹配则生成对应的 token如IF、FOR。软关键字的判断则依赖于语法解析器的上下文。5. 关键字与内置函数的区别关键字是语法的一部分不能被覆盖。内置函数如print,len只是预定义的函数可以被重新赋值但不推荐。6. 如何查看所有关键字importkeywordprint(keyword.kwlist)# 硬关键字列表print(keyword.softkwlist)# 软关键字列表Python 3.97. 硬关键字 vs. 软关键字硬关键字在任何位置都不能作为标识符使用。软关键字仅在特定的语法上下文中被视为关键字例如match和case只在match语句中是关键字其他位置可以作为普通变量名。硬关键字35 个关键字作用False布尔假值常量None表示空值或缺失值的特殊对象True布尔真值常量and逻辑与运算符短路求值as为导入的模块、异常或上下文管理器起别名assert断言条件为假时引发AssertionErrorasync定义异步函数协程或异步上下文管理器await等待异步任务完成只能在async函数中使用break跳出当前循环for或whileclass定义类continue跳过本次循环剩余代码继续下一次迭代def定义函数或方法del删除变量、属性或容器中的元素elifif语句中的else if分支else条件不满足时执行的分支也可用于循环和异常处理except捕获异常与try配合finally无论是否发生异常都会执行的代码块与try配合for循环遍历可迭代对象from从模块中导入特定成员与import配合global声明变量为全局作用域if条件判断import导入模块或模块中的成员in成员测试是否在序列、映射或集合中也用于for循环is身份比较判断两个对象是否为同一对象lambda创建匿名函数nonlocal声明变量为嵌套函数的外层作用域变量not逻辑非运算符or逻辑或运算符短路求值pass空语句占位符raise抛出异常return从函数返回值try异常处理开始块while条件循环with上下文管理器自动管理资源如文件、锁yield从生成器函数中返回值并暂停函数状态软关键字4 个关键字作用_在match语句中作为通配符模式匹配任何值但不绑定变量在普通上下文中可作为标识符通常表示“不关心”的值case在match语句中定义匹配分支match用于结构模式匹配match语句的开始与case配合使用type用于定义类型别名PEP 695例如type Point tuple[float, float]在非此上下文中仍可作为普通标识符如type(obj)说明软关键字仅在特定的语法上下文中具有特殊含义其他位置可作为普通标识符使用。例如match和case只在match语句中才是关键字_只在match语句中作为通配符type只在type name ...语句中才是关键字。如果在学习过程中遇到问题欢迎在评论区留言讨论!