文章目录
一、条件控制
1.1 if 条件语句
if 条件语句是通过布尔表达式的值来决定所要执行的代码块。
1.1.1 if 语法格式(伪代码形式)
格式一
if condition:
<statements>
格式二
if condition:
<statements>
else:
<statements'>
语法三
if condition:
<statements>
elif condition_1:
<statements_1>
...
elif condition_n:
<statements_n>
else:
<statements'>
1.1.2 说明
condition
为布尔表达式,即返回结果为布尔类型数据的表达式。- 在执行 if 语句时,计算机会从上往下依次判断每个布尔表达式的值,直到返回结果为 True 的布尔表达式出现为止,接着执行对应的
<statements>
代码块。
在执行完代码块后,计算机会自动忽略后面的条件语句,并直接跳出整个条件语句块。 - 特别地,当有一个代码块
<statements>
只有一条语句时,可以将该语句与相应的条件关键字 (if、elif、else) 放在同一行,构成一个简单语句组。
1.1.3 注意
- 每个条件后面都要使用英文冒号
:
,以表示接下来是满足条件后所要执行的代码块,不可以省略。 - 如果将指向可迭代对象 (iterable) 的变量名作为布尔表达式,则当可迭代对象至少包含一个元素时返回值为 True,当可迭代对象为空时返回值为 False。
- Python 并不要求 if-elif 结构后面必须紧跟 else 代码块,即可以省略不写 else 代码块。
1.2 match 条件语句
match 条件语句是在 Python 3.10 中引入的一种语法,主要用于模式匹配,可以将一个值与多个模式进行比较,并执行与第一个匹配成功的模式所对应的代码块。
1.2.1 match 语法格式(伪代码形式)
match expression:
case pattern_1:
<statements_1>
case pattern_2:
<statements_2>
...
case _:
<statements>
1.2.2 说明
expression
和pattern
是要进行模型匹配的具有返回值的表达式;- 最后一个 case 后面紧跟的符号
_
是通配符,表示任意值,作用类似于 C 语言的 switch 语句中的 default。 - 在 match 语句中,只要执行完匹配成功的模式所对应的代码块,计算机就会自动忽略后面的条件语句,并直接跳出整个条件语句块。
因此,Python 的 match 语句不存在类似 C 语言的 switch 语句的穿透问题。 - 特别地,当有一个代码块
<statements>
只有一条语句时,也可以将该语句与关键字 case 放在同一行,构成一个简单语句组。
1.2.3 注意
- 每个模式后面都要紧跟英文冒号
:
,以表示接下来是匹配成功后所要执行的代码块,不可以省略。 - 每个 case 后面都可以有多个模式,当 case 后面有多个模式时,在不同模式之间需要使用
|
来进行模式组合。此时,只要多个模式中有一个匹配成功,就会执行相应的代码块。 - 如果在 match 语句中,没有一个模式匹配成功,则会触发 MatchError 异常。因此最好在 match 语句中的最后加上 case _ 代码块,以确保永远可以匹配成功。
二、循环语句
2.1 for 循环语句
for 循环可以遍历任何可迭代的数据类型。
2.1.1 for 语法格式(伪代码形式)
for variable in iterable:
<statements>
2.1.2 说明
variable
即变量,可以给variable
指定任意名称,但最好选择可以描述可迭代对象元素的有意义的名称;iterable
为可迭代对象,可以是序列类型数据、字典类型数据的视图对象或集合类型数据等;- for 语句的每一次循环,都会在
iterable
中进行取值,并对变量variable
进行赋值,当variable
取尽iterable
中的所有元素后,循环结束。 - 特别地,当有代码块
<statements>
只有一条语句时,也可以如同条件语句一样构成一个简单语句组。
2.1.3 注意
- for 循环并不是判断
variable
的值是否存在于iterable
中,而是重复地将iterable
中的元素赋值给variable
; - 和条件语句一样,出现在 for 循环语句中的冒号
:
也不可以省略。
2.2 while 循环语句
while 循环语句用于在指定的布尔表达式的结果为真时,循环执行相应的代码块,直到布尔表达式的结果为假。
2.2.1 while 语法格式(伪代码形式)
while condition:
<statements>
2.2.2 说明
condition
为布尔表达式,即返回结果为布尔类型数据的表达式。- while 循环语句在每一次执行代码块
<statements>
之前,都会对condition
的结果进行判断,如果结果为真,则执行<statements>
;如果结果为假,则直接结束循环。 - 特别地,当有代码块
<statements>
只有一条语句时,也可以如同条件语句一样构成一个简单语句组。
2.2.3 注意
- 在大多数情况下,循环条件
condition
的结果必须能够在循环的某一次执行中发生变化,否则循环将变成无限循环,导致程序崩溃或无法结束。 - 在使用 while 循环时,需要确保循环条件
condition
有一个合理的初始值,以便在第一次循环时可以正确执行循环条件的判断。 - 和条件语句一样,出现在 while 循环语句中的冒号
:
也不可以省略。
三、break 和 continue
3.1 break
作用:用于在循环语句中终止循环。
即使循环条件仍然满足,一旦计算机执行到 break 语句,循环就会立即结束,跳出整个循环结构。
break 可以单独成为一条语句,且 break 语句通常位于循环内部的某个条件语句中,用于在满足某种条件下,提前终止循环,并跳出循环结构。例如:
for variable in iterable:
<statements_1>
if condition:
break
<statements_2>
while condition_1:
<statements_1>
if condition_2:
break
<statements_2>
注意:
- break 一次只能终止一个循环;
- 如果 break 存在于嵌套循环内,则 break 语句只能终止其所处的循环及内层循环,而无法终止外层循环;
- break 语句只能用于循环结构中。
3.2 continue
作用:用于在循环语句中提前结束当前循环,并进入下一次循环。
continue 可以单独成为一条语句,且 continue 语句通常位于循环内部的某个条件语句中,用于在满足某种条件下,提前结束当前循环,并进入下一次循环。例如:
for variable in iterable:
<statements_1>
if condition:
continue
<statements_2>
while condition_1:
<statements_1>
if condition_2:
continue
<statements_2>
注意:
- continue 只能跳过当前循环中后面还未被执行的语句;
- continue 语句只能用于循环结构中。
四、pass
和 break、continue 一样,pass 也可以单独成为一条语句;不同的是,pass 语句不仅可以用于循环结构中,也可以用于其它任何地方。
作用:用于表示 “空操作”,即 pass 语句 “ 什么也不做”。
pass 通常用于充当占位符,表示代码尚未实现、待添加或待完善的部分。
可能使用 pass 语句的场景:
- 在开发过程中暂时空出函数的实现部分,以便先完成其它代码的编写;
- 在添加新代码时,占用一个编写位置。例如在 if 或 while 语句中使用,让代码结构更加合理清晰。
- 保留将来可能添加到程序中的特定代码结构或占位符。
- 避免由于忘记了特定的业务逻辑而导致代码实现错误。