引言
距离上次更新Python的学习笔记,有个四五天,主要原因有两个:一是忙,没有时间,第二个就是之前学的路线,已经到头了,我找不到下面学习路线的资料。
主要说下第二点是主要原因。我为啥明知道这个只能到入门一点点还用这份资料?主要还是因为大佬入门知识写的好,我学起来感觉不吃力,有学下去的动力。当然我也知道后面学习要换新资料,毕竟我学这个是要往稍微深入点学习的,但是入门是最关键的,只有 入门了,才有往下学的基础。
新的学习路线,主要来源是Python官方的教程和Python crash course书籍,我有空的话搞个图出来,毕竟我也是自己学习,自己研究自己的学习路线,当然大家可以找找网上培训班的学习路线和教程,甚至还有视频文件,都可以的。
由于新旧路线的差别,我不会在旧文章进行修改,我会在后面两天,对比过后更新差异内容。
那么今天的这篇文章,主要是将pass语句和match语句,废话不说进入正题。
PASS
什么是pass语句?
pass是一个空操作符,表示什么也不做,在需要语句但程序不需要执行任何操作的地方使用。
pass语句的语法
pass
什么地方用pass语句?
- 作为占位符,用于尚未实现的代码块(这里涉及到函数的一些知识,不深讲。函数的知识在我补充完差异内容后会更新,我本身这几天已经学习了函数的一些知识,实际上我写的这些笔记,都是我先学了一遍,复习的时候写的文章)
- 满足语法要求,但暂时不需要执行任何操作
- 在循环或条件语句中,作为空循环体或条件体
# 1.作为占位符,用于尚未实现的代码块
def example_function():
pass # 表示这个函数暂时不执行任何操作
example_function()
# 2.满足语法要求,但暂时不需要执行任何操作
if 1 == 1:
pass
else:
print("大家好")
# 3.在循环或条件语句中,作为空循环体或条件体
for i in range(5):
pass # 空循环体,循环将执行但什么也不做
为什么用pass
- 保持语法结构完整性,避免错误。在某些语法结构中,必须跟着一个代码块,不然解释器会报错的,这个时候用上pass,就可以保持语法结构的完整性。
- 占位,避免歧义及错漏。在开发过程中,可能某些部分还没有开发完成或者部分需求需要和别人合作,那么这部分代码就可以是用pass来占位,后面来进行补充。相比直接一个空代码块,可以更好的避免歧义和遗漏导致错误。
- 可读性和可维护性。使用pass语句,可以明确表示此处代码块虽然什么也不做,但是此处是有意留下可以后续补充得语句。同时使用pass语句可以在不影响代码运行的情况下,逐步填充和完善代码,方便维护和开发。
match
什么是match语句?
match语句是Python中一种新的模式匹配结构,它提供了一种更加直观和灵活的方式来处理数据匹配。match需要和case一起使用。
match语句的语法
当case中的值与subject匹配上,就进入case对应的代码块,匹配不上向下执行,直到最后
match subject:
case pattern_1:
# 代码块1
case pattern_2:
# 代码块2
...
case _:
# 默认代码块
- subject:是要匹配的表达式的结果。
- pattern:是与subject的结果匹配的模式。
- _:是一个特殊的模式,它匹配任何值,通常用作默认情况。
什么地方用match语句?
match语句可以理解为强化版易于理解的多条件语句。那么当你的目标值存在很多种可能性,每个可能性又需要适配不同的代码块的时候,就可以使用match语句了。
什么是match语句的模式?
模式是match语句的核心,它们定义了数据的结构和如何从中提取值。
- 字面量模式:匹配具体的值
match x:
case 1:
print("One")
case 2:
print("Two")
- 变量模式:将值绑定到变量。
match data:
case var:
print(f"Data is {var}")
- 序列模式:匹配序列(如列表或元组)并解构它们。
match point:
case [x, y]:
print(f"Point has coordinates ({x}, {y})")
- 映射模式:匹配字典并解构键值对。
match data:
case {"name": name, "age": age}:
print(f"Name: {name}, Age: {age}")
- 类模式:匹配类实例并访问其属性。这个看看就行,也可以先跳过。
# 定义类 point
class Point:
# 定义初始化函数
def __init__(self, x, y):
self.x = x
self.y = y
# 匹配类point
match point:
# 如果匹配到类的x属性值是3,y属性值是4,进入当前case下的代码块
case Point(x=3, y=4):
print("Point is at origin offset by 3, 4")
- 星号模式:匹配序列中的固定数量的元素,捕获剩余的元素。
match items:
case [first, *rest]:
print(f"First item: {first}")
print(f"Rest of items: {rest}")
- 守卫模式:在case后面添加条件语句,只有当条件为真时,该case才会匹配。
match x:
case x if x > 0:
print("Positive number")
case x if x < 0:
print("Negative number")
为什么用match
- match语句通过结构化的方式组织条件分支,使代码更加清晰易读,简介明了,在后续修改维护中,代码分支条件也更加直观容易维护。
- match语句可以表达复杂的逻辑,使得某些情况下的代码编写更加直观和高效。
- match语句要求所有可能的情况都被明确地覆盖到,这有助于减少遗漏某些条件分支的错误。
最后
由于match是新的语法结构,目前我提供的在线网站执行代码都是报错的。所以大家需要下载一个IDE来尝试自己编写match语句。
由于我自己的电脑已经装好了并且还有一些文件在,我明天去公司用公司电脑卸载后重新安装,搞一份IDE安装教程,大家可以等我出完教程后进行学习,或者可以自己在网上找一篇文章进行安装。
那么今天就到这里了,感谢阅读。