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文件

一、包

 

二、包的管理

 

 

posted @ 2018-07-14 12:46  浏阳河  阅读(137)  评论(0编辑  收藏  举报