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.生成器迭代器 模块包和包管理的主要内容,如果未能解决你的问题,请参考以下文章

Python 推导式迭代器生成器模块和包

PHP资源大全(上篇)

PHP资源PHP 资源大全

python基础

Python基础

从C#到Python——5模块和包