- 一、迭代器
- 迭代器(iter)是容器型数据类型;
- 创建迭代器方法:
- 迭代器的查操作
- 二、生成器
- 生成器是容器型数据类型,用于创建数据
- 创建生成器 - 调用带有 yield关键字的函数
- 定义生成器对应的函数
- 三、模块
- python中一个py文件就是一个模块
- 使用原则:先导入再使用 (导入的模块名要符合变量命名要求)
- 导入模块
- 导入模块时选择性执行代码
- 四、包
- 包就是包含__init__.py文件的文件夹
- 1.包用来管理py文件,对py文件按照特定的方式进行分类。
- 2.使用方式:
- 五、异常捕获
- 执行程序的过程中,如果出现异常,会中断程序的执行(让程序提前结束)
- 异常捕获 - 当程序出现异常时,不崩溃,可以接着往后执行。
- 迭代器(iter)是容器型数据类型;
print()无法查看迭代器元素,无法用len获取元素个数
迭代器取元素需按顺序从上往下,依次取出,无法放回迭代器
- 创建迭代器方法:
-
- 用iter将其他序列转换成迭代器
-
- 创建生成器
i2 = iter([10, 20, 30, 40]) print(i2) # print(len(i2))
- 迭代器的查操作
当元素从迭代器中获取,被获取元素即被取出,无法放回。
-
获取单个元素: next(迭代器)
print(next(i1))
-
遍历
for x in i1: print(f'x:{x}') -
迭代器转换成序列
i3 = iter('hello') result = list(i3) print(result)
-
- 生成器是容器型数据类型,用于创建数据
print()生成器无法查看元素,不支持len操作
生成器获取元素需按顺序从上往下,依次取出,无法放回生成器。 - 创建生成器 - 调用带有 yield关键字的函数
生成器保存的并不是数据本身,而是产生数据的算法。
如果被调用的函数的函数体中有yield,调用函数的时候不会执行函数体,也不会获取函数返回值,而是得到一个生成器对象 (函数调用表达式的值就是生成器)
- 定义生成器对应的函数
执行函数体会遇到几次yield对应的生成器就可以创建多少个数据;
yield后面的值就是生成器获取的数据元素
def func2():
yield 100
yield 200
yield 300
gen2 = func2()
print(next(gen2))
三、模块
- python中一个py文件就是一个模块
- 使用原则:先导入再使用 (导入的模块名要符合变量命名要求)
- 导入模块
-
import 模块名
-
from 模块名 import 变量1,变量2,…
-
from 模块名 import *
-
import 模块名 as 新模块名 ----(导入模块并对模块重命名)
-
from 模块名 import 变量1 as 新变量1, 变量2 as 新变量2, …
-------(对导入的变量重命名)
import test1 from test1 import a, func1 from test1 import * import test1 as t1 from test1 import a, name as tname
-
- 导入模块时选择性执行代码
方法:在被导入的模块中添加指定的if语句,
(if __name__ == '__main__')
将不需要被别的模块执行的代码放入到这个if语句中
#模块调用内以下for循环不会被执行
if __name__ == '__main__':
for x in range(10):
download_film(f'电影{x}')
四、包
包就是包含__init__.py文件的文件夹
1.包用来管理py文件,对py文件按照特定的方式进行分类。
2.使用方式:
# 1) import 包名 -导入指定的包,导入后可以通过'包名.xxx'的方式使用__init__.py文件中所有内容 # 2) import 包名.模块名 - 导入指定包中的指定模块(文件夹可用) # 3) from 包名 import 模块名1,模块名2,... # 4) from 包名.模块名 import 变量1, 变量2,...
===== 直接导入包 ====== import fileManager fileManager.create_file() print(fileManager.m) ===== 直接导入包中的模块 ===== import fileManager.operateFile import files.test2 fileManager.operateFile.open_file() fileManager.operateFile.close_file() ===== 直接导入包中的模块,然后重命名 ===== import fileManager.operateFile as file file.close_file() file.open_file() ===== 直接导入包中指定多个模块 ===== # from fileManager import operateFile, operateJsonFile as json # operateFile.open_file() # ===== 导入指定包名中指定模块中的指定内容 ===== # from files.test2 import x, func2 # print(x) # func2()五、异常捕获
- 执行程序的过程中,如果出现异常,会中断程序的执行(让程序提前结束)
exit() - 让程序正常退出
- 异常捕获 - 当程序出现异常时,不崩溃,可以接着往后执行。
注意:不要滥用异常捕获。如果是因为使用者使用不当导致程序出现异常,又希望在出现异常程序可以继续执行才使用异常捕获。
结构1 - 捕获所有异常
try:
代码段1(需要捕获异常的代码段)
except:
代码段2(捕获到异常需要执行的代码段)执行过程:先执行代码段1,如果出现异常直接马上执行代码段2;如果没有出现异常,就不执行代码段2
结构2 - 捕获指定异常
try:
代码段1(需要捕获异常的代码段)
except 异常类型:
代码段2(捕获到异常需要执行的代码段)
try:
age = int(input('请输入年龄:')) # ValueError
if age >= '18':
print('成年!')
else:
print('未成年!')
except:
print('年龄输入有误!')
# age = int(input('请输入年龄:'))
thon
try:
age = int(input('请输入年龄:')) # ValueError
if age >= '18':
print('成年!')
else:
print('未成年!')
except:
print('年龄输入有误!')
# age = int(input('请输入年龄:'))



