13.生成器迭代器 模块包和包管理
Posted lyh-520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13.生成器迭代器 模块包和包管理相关的知识,希望对你有一定的参考价值。
生成器
一、创建生成器的两个方法
#方法 一:列表推导式的 [ ] 改成 ( ) tu = (x for x in range(11)) print(tu) print(next(tu)) print(next(tu)) print(next(tu)) #方法 二:在函数里面加上yield def func1(num): i = 0 while i <= num: yield i i += 1 a = func1(10) for i in a: print(i)
二、yield运行规则
·
def func(): print("---------------") yield 11 print("=======11========") yield 22 print("=======22========") yield 33 print("=======33========") result = func() print(next(result)) print(next(result)) print(next(result))
注意:
yield 表达式只能在函数中使用,在函数体中使用 yield 表达式可以使函数 成为一个生成器
yield 可以返回表达式结果,并且暂定函数执行,直到next激活下一个yield
Python使用生成器对延迟操作提供了支持。所谓延迟操作,是指在需要的时候才 产生结果,而不是立即产生结果,从而节省大量的空间,这也是生成器的主要好处
迭代器
迭代就是一个依次从数据结构中 拿出东西的过程
迭代可以用更加低级的while来实现,但是需要自己控制下标 并获取对应的元素
一、区分 可迭代对象 和 迭代器
from collections import Iterable ,Iterator
可迭代对象: Iterable 可迭代对象能用for循环进行遍历
可以使用 isinstance() 判断一个对象是否是 Iterable 对象:
迭代器:Iterator
迭代器不仅可以通过for进一行遍历,可以通过next取值
可以使用 isinstance() 判断个对象是否是 Iterator :
from collections import Iterable ,Iterator str1 = "sdafgbgfn" for i in "sdsafvfadfv": #for循环 print(i) str2 = iter(str1) #把可迭代对象转换为迭代器 # print(isinstance(str2,Iterator)) #判断是否为迭代器 print(next(str2))
二、迭代
#迭代循环原理 li = [1,2,3,4,5] index = 0 var = None while index<len(li): var = li[index] print(var) index += 1
三、for 实现原理
四、从可迭代对象生成一个迭代器
五、迭代器
生成器有next方法没有iter方法
模块
模块就是一个python文件
在开发中,我们可以分配不同的程序员,不同部 分的工作,最后通过导入模块,将所有人的成果结合在一起
import --> 执行导入的文件 --> 在当前这个文件里生成一个模块对象
一、模块
二、导入语法 与 导入路径
三、if __name__ == ‘__main__‘:
包和包管理
包,就是包含了很多模块的文件夹
构造一个包:首先需要把py文件放入包中,并且加一个__init__.py文件
一、包
二、包的管理
以上是关于13.生成器迭代器 模块包和包管理的主要内容,如果未能解决你的问题,请参考以下文章