程序结构

语句#

语句(Statement)是指令式编程语言中最小的独立元素,表达程序要执行的一些动作。语句是程序段(一个代码“块”)的组成单位。一条语句可以是一个表达式或某个带有关键字的结构,例如 ifwhilefor。一般将 Python 的语句分为简单语句复合语句

  • 简单语句

    由一个单独的逻辑行构成的语句。

  • 复合语句

    包含其它语句(语句组)的语句,它们会以某种方式影响或控制所包含其它语句的执行。通常,复合语句会跨越多行,虽然在某些简单形式下整个复合语句也可能包含于一行之内。

像 C、Java 语言一样,Python 以分号 ; 作为语句结束的标识,但 Python 中句末的分号可以省略,并且经常省略。

Python 的简单语句包括表达式语句、赋值语句、assert 语句、pass 语句、del 语句、return 语句、yield 语句、raisebreak 语句、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 语句)、循环结构(whilefor 语句)、块结构、子程序这些结构化的控制流程,来改善计算机程序的明晰性、质量以及开发时间,并且避免写出面条式代码(指源代码的控制流程复杂、混乱而难以理解)。

控制流程(Control flow)是指令式编程语言中,语句、指令或函数调用被执行或求值的顺序。

根据结构化编程理论,所有的程序可由如下四种控制流程(或称控制结构)组成:

  • 顺序结构(Sequence):语句或子程序按预先排好的顺序逐次执行。
  • 选择结构(Selection):通过判断条件是否成立,来决定执行哪个分支。Python 通过 if...elif...else 语句实现选择结构。
  • 循环结构(Iteration):一直执行某一段程序,直到满足特定条件,或是一集合体中的所有元素均已处理过。Python 通过 whilefor 语句实现循环结构。
  • 递归结构(Recursion):一条语句通过重复调用自身来执行,直到满足终止条件。递归结构与循环结构类似,但可能会更高效,且在计算机实现上有所不同。
控制结构

控制结构

流程控制语句if 语句