复合语句 #################################### 复合语句是包含其它语句(语句组)的语句;它们会以某种方式影响或控制所包含其它语句的执行。 通常,复合语句会跨越多行,虽然在某些简单形式下整个复合语句也可能包含于一行之内。 if, while 和 for 语句用来实现传统的控制流程构造。 try 语句为一组语句指定异常处理和/和清理代码,而 with 语句允许在一个代码块周围执行初始化和终结化代码。 函数和类定义在语法上也属于复合语句。 一条复合语句由一个或多个‘子句’组成。 一个子句则包含一个句头和一个‘句体’。 特定复合语句的子句头都处于相同的缩进层级。 每个子句头以一个作为唯一标识的关键字开始并以一个冒号结束。 子句体是由一个子句控制的一组语句。 子句体可以是在子句头的冒号之后与其同处一行的一条或由分号分隔的多条简单语句,或者也可以是在其之后缩进的一行或多行语句。 `if 语句`_ ************************************ .. _`if 语句`: ../ControlFlow/01.if.rst if 语句用于有条件地执行语句,可包含 elif 和 else 子句。 :: if x < 10: print('Less than ten') elif 10 <= x < 20: print('Less than twenty') else: print('Twenty or more') while 语句 ************************************ while 语句用于在指定条件下反复地执行语句(循环),可包含 else 子句,这种子句将在循环正常结束时执行(如没有执行任何 break 和 return 语句)。 :: x = 1 while x < 100: x *= 2 print(x) for 语句 ************************************ for 语句用于对序列的元素或其他可迭代对象(包含返回迭代器的方法 ``__iter__`` 的对象)反复地执行语句,可包含 else 子句,这种子句将在循环正常结束时执行(如没有执行任何 break 和 return 语句)。 :: >>> for i in range(3): ... print(i) ... 0 1 2 try 语句 ************************************ try 语句用于执行可能发生异常的代码段,让程序能够捕获这些异常并执行异常处理代码。try 语句可包含多个 except 子句(用于处理异常)和 finally 子句(这种子句不管情况如何都将执行,可用于执行清理工作)。 :: try: 1 0 except ZeroDivisionError: print("Can't divide anything by zero.") finally: print("Done trying to calculate 1 0") with 语句 ************************************ with 语句用于包装使用上下文管理器的代码块,让管理器能够执行一些设置和清理操作。例如,可将文件用作上下文管理器,这样它们将在执行清理工作时关闭自己。 :: with open("somefile.txt") as myfile: dosomething(myfile) # 到这里时文件已关闭 函数定义 ************************************ 函数定义用于创建函数对象以及将全局或局部变量与函数对象关联起来。 :: def double(x): return x * 2 类定义 ************************************ 类定义用于创建类对象以及将全局或局部变量与类对象关联起来。 :: class Doubler: def __init__ (self, value): self.value = value def double(self): self.value *= 2 协程 ************************************ 协程:是单线程下的并发,又称微线程,纤程。英文名 Coroutine。协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。