文章目录
一、迭代器
-
- 用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)
-
二、生成器
生成器保存的并不是数据本身,而是产生数据的算法。
如果被调用的函数的函数体中有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('请输入年龄:'))