Control
复合语句
<header>:
<statement>
<statement>
...
<separating header>:
<statement>
<statement>
...
...

头部特化的求值规则
指导了组内的语句什么时候被执行、是否会被执行
多行程序的定义:
要想执行语句序列,先要执行第一条语句。如果这个语句不是重定向控制,执行语句序列的剩余部分(如果存在的话)。
一个序列可以划分为它的第一个元素和其余元素。
语句序列的“剩余”部分也是一个语句序列。
我们可以递归应用这个执行规则。
定义函数 II:局部赋值
赋值语句的效果是在当前环境的第一个帧上,将名字绑定到值上
函数体内的赋值语句不会影响全局帧
局部赋值也可以将名称赋为间接量
Names Have No Meaning Without Environments
每个表达式 is evaluated in the context of an environment
A name evaluates to the value(名称的计算结果) bound to that name(绑定到这个名字) in the earliest frame of the current environment(在当前环境的最早框架中) in which that name is found.

条件语句
布尔上下文
它们值的真假对控制流很重要
它们的值永远不会被赋值或返回
Python 包含了多种假值
0、None、False
短路
True or False # True
<right>不一定会执行
迭代
为了防止while子句的语句组无限执行,它应该总是在每次通过时修改环境的状态。
不终止的while语句叫做无限循环。按下
<Control>-C可以强制让 Python 停止循环。
实践指南:测试
验证函数的行为是否符合预期的操作
通常写为另一个函数
这个函数包含一个或多个被测函数的样例调用
测试涉及到挑选特殊的参数值
测试也可作为文档(文档测试)
断言
使用
assert语句来验证预期例如测试函数的输出
assert语句在布尔上下文中只有一个表达式,后面是带引号的一行文本(单引号或双引号都可以)如果表达式求值为假,表达式就会显示。
为真时,没有任何效果
当它是假时,会造成执行中断
测试可以写在同一个文件,
或者后缀为_test.py的相邻文件中
Doctest
Python 提供了一个便利的方法,将简单的测试直接写到函数的文档字符串内。
第一行应该包含单行的函数描述
后面是一个空行。
参数和行为的详细描述跟随在后面。
可以使用 doctest 模块来验证交互。
可以通过以下面的命令行选项启动 Python 来运行一个文档中的所有 doctest。
高效测试的关键是
在实现新的函数之后(甚至是之前)立即编写(以及执行)测试。
只调用一个函数的测试叫做单元测试。
详尽的单元测试是良好程序设计的标志。
Last updated
Was this helpful?