zoukankan      html  css  js  c++  java
  • 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文件

    一、包

    二、包的管理

     

  • 相关阅读:
    通过IP获取地理位置,做分类系统必备!
    【转】句柄详解
    【转】C#泛型约束
    [转]掌握 Ajax,第 3 部分: Ajax 中的高级请求和响应[IBM]
    WPF调用Winfrom控件
    【转】C#对象的深拷贝与浅拷贝
    判断一个OBject类型是值类型还是引用类型
    WCF关于svcutil生成关于TCP绑定出现 元数据包含无法解析的引用:“net.tcp://127.0.0.1:9999/xxxx/”的解决方案
    C#枚举基础解析
    [转]掌握Ajax 第 1 部分: Ajax 入门简介 [IBM]
  • 原文地址:https://www.cnblogs.com/lyh-520/p/9308950.html
Copyright © 2011-2022 走看看