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

    一、包

    二、包的管理

     

  • 相关阅读:
    Git 处理tag和branch的命令
    手把手教您使用第三方登录
    iOS 中隐藏UITableView最后一条分隔线
    Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
    iOS-改变UITextField的Placeholder颜色的三种方式
    react-native 关闭黄屏警告
    reactnative js onclick 模拟单击/双击事件
    reactnative 监听屏幕方向变化
    reactnative0.61.2 使用react-native-webrtc
    use react-navigation@2.18.2
  • 原文地址:https://www.cnblogs.com/lyh-520/p/9308950.html
Copyright © 2011-2022 走看看