语句#
语句(Statement)是指令式编程语言中最小的独立元素,表达程序要执行的一些动作。语句是程序段(一个代码“块”)的组成单位。一条语句可以是一个表达式或某个带有关键字的结构,例如 if、while 或 for。一般将 Python 的语句分为简单语句和复合语句。
-
简单语句
由一个单独的逻辑行构成的语句。
-
复合语句
包含其它语句(语句组)的语句,它们会以某种方式影响或控制所包含其它语句的执行。通常,复合语句会跨越多行,虽然在某些简单形式下整个复合语句也可能包含于一行之内。
像 C、Java 语言一样,Python 以分号 ; 作为语句结束的标识,但 Python 中句末的分号可以省略,并且经常省略。
Python 的简单语句包括表达式语句、赋值语句、assert 语句、pass 语句、del 语句、return 语句、yield 语句、raise、break 语句、continue 语句、import 语句、future 语句、global 语句、nonlocal 语句。
多条简单语句也可以存在于同一行内并以分号分隔,如下所示:
# 习惯写法
a = 2
b = 3
print(a ** b) # 8
# 也可以在一行内写多条语句,但不推荐这样
a = 2; b = 3; print(a ** 3) # 8
也可以将一个简单语句分多行书写。如同字符串中可以使用 \<换行> 来消除换行,同样可以使用 \ 作为行连续符,将
s = '我' + \
'有一个' + \
'梦'
print(s) # 我有一个梦
另外,如果语句中包含 ( )、[ ] 或 { } 这类括号,在括号内不需要使用 \ 可以直接换行:
weekdays = ['Monday', 'Tuesday', 'Wednesday',
'Thursday',
'Friday', 'Saturday', 'Sunday']
复合语句的结构
复合语句由一个或多个子句组成,每个子句包含一个句头和一个句体。每个子句头以一个关键字开始并以一个冒号结束。子句体可以包含一行或多行,经常和句头放在不同行,并缩进书写。如右图所示。
Python 的复合语句包括 if 语句、match 语句、while 语句、for 语句、try 语句、with 语句、函数定义、类定义、协程。
缩进在 Python 中是非常重要的。其他语言,如 C、Java、JavaScript,缩进只具有提高可读性的作用,编译器并不关心这些缩进。但在 Python 中,用缩进来表示语句块(或称代码块)的范围,并列的语句具有相同的缩进。
可以使用任意个数的空格和水平制表符进行缩进,但习惯上用 4 个空格进行缩进,即行首的空格数是 4 的倍数。当下一行的缩进少了一级时,语句块在此行结束。
s = 'Hello'
if s != '':
s += ', world!'
print(s) # if 语句块在此行结束
print(s) # Hello
结构化编程#
结构化编程(Structured programming)是一种编程范式。它通过大量使用选择结构(if 语句)、循环结构(while 和 for 语句)、块结构、子程序这些结构化的控制流程,来改善计算机程序的明晰性、质量以及开发时间,并且避免写出面条式代码(指源代码的控制流程复杂、混乱而难以理解)。
控制流程(Control flow)是指令式编程语言中,语句、指令或函数调用被执行或求值的顺序。
根据结构化编程理论,所有的程序可由如下四种控制流程(或称控制结构)组成:
- 顺序结构(Sequence):语句或子程序按预先排好的顺序逐次执行。
- 选择结构(Selection):通过判断条件是否成立,来决定执行哪个分支。Python 通过
if...elif...else语句实现选择结构。 - 循环结构(Iteration):一直执行某一段程序,直到满足特定条件,或是一集合体中的所有元素均已处理过。Python 通过
while和for语句实现循环结构。 - 递归结构(Recursion):一条语句通过重复调用自身来执行,直到满足终止条件。递归结构与循环结构类似,但可能会更高效,且在计算机实现上有所不同。
控制结构