第九章中,依然是对python的数据类型进行介绍,主要内容为不可变对象的集合:元组和文件,元组的索引和切片,文件的多种读操作、写操作以及追加写操作。
现在进入本书的第三部分:语句和语法
第十章的主要内容为python语句
1.程序的包含关系
程序由模块组成,模块中包含语句,语句中包含表达式,表达式建立并处理对象
2.yield生成器函数
>>>def num(n): #简单示例,用于理解yield生成器(generator)函数
··· for i in range(n):
··· yield n #直接在内存中生成一个列表,而不必重新创建一个列表,造成内存的占用
···
>>>n = num(5)
>>>n #一个generator对象
<generator object num at 0x0000018619541BF8>
>>>for i in n: #只能被遍历一次
··· print(i)
···
>>> from inspect import isgeneratorfunction # 判断函数是否是生成器函数
>>> isgeneratorfunction(num)
True
>>> import types # 判断实例化对象是不是generator实例对象
>>> isinstance(n,types.GeneratorType)
True
3.关于global nonlocal
全局变量:global
外层(非全局)变量:nonlocal # 当函数内嵌套函数,被嵌套的函数可以使用nonlocal声明,来使用上一层函数的变量
# 当函数自身不是嵌套函数,不能使用nonlocal声明来使用上一层(即全局)的变量
4.捕获异常try/except/finally,触发异常raise
>>> try: # 使用try,出现错误则跳过执行except,避免程序被错误中断,finally总是会执行
... print(1/0)
... except: # 可以使用多个except分支,用于捕获相关异常,再根据异常做相应处理
... print('error')
... finally:
... print('end')
...
error
end
5.python语法的缩进并非一定是4个空格,这只是一个良好习惯,只要在同一个代码块中,使用相同的缩进数即可,如1个空格或者2个制表符
6.行内多条语句,使用分号区分
一条语句写在多行,可以用三引号、括号()、方括号[ ]、大括号{ }