美文网首页
day11-课后总结

day11-课后总结

作者: 麻瓜_1fb4 | 来源:发表于2018-10-13 14:21 被阅读0次

    文件操作

    1.模块的使用

    a.导入模块
    可以通过import或者from-import在一块模块中去使用另一个模块的内容.
    import 模块名 --->将模块所有的内容都导入,并且可以在当前模块中通过“模块名.”的方式去使用模块中所有的全局变量
    from 模块名 import 变量1, 变量2 ---> 将模块中所有的内容都导入,但是只能使用import后面的变量
    from 模块名 import * --->将模块中所有的内容都导入,可以直接使用模块中的所有全局变量

    2.阻止导入的犯法:

    if name == 'main':
    代码块
    不希望被别的模块导入执行的代码写在这儿

    3.迭代器

    没有一个具体的字面量,可以将其他的序列转换成迭代器:iter(序列)
    a.迭代器的特点
    只能通过next方法去一个一个按顺序获取迭代器中的元素,取出后迭代器中就不存在这个元素了

    iter1 = iter('nie112')
    print(iter1)
    print(next(iter1))
    for x in iter1:
        print(x)
    
    结果
    迭代器.next()
    iter2 = iter((1, 2, 3))
    a = iter2.__next__()
    print(a)
    print(iter2.__next__())
    print(next(iter2))
    ######
    1
    2
    3
    

    4.生成式和生成器

    生成器就是迭代器,但是迭代器不一定是生成器
    生成式就是生成器的一种特殊形式:(变量 for 变量 in 序列)

    # 产生一个生成器,生成器中可以生成的数据是0~4(每个元素是数字)
    ge1 = (x for x in range(5))
    print(ge1)
    print(next(ge1)) # 0
    print(next(ge1)) # 1
    
    print("==============")
    for item in ge1:
        print(item)
    #####
    2
    3
    4
    
    ge3 = ([x, x*2] for x in 'abc')
    print(next(ge3))
    for item in ge3:
        print(item)
    #####
    ['a', 'aa']
    ['b', 'bb']
    ['c', 'cc']
    

    2.yield

    函数中只要有yield,那么调用这个函数就不再是执行函数体并且获取返回值了,而是产生一个生成器。

    def func1(n):
        for x in range(n+1):
            print(x)
        yield 1000
    ge8 = func1(3)
    print(ge8)
    
    print(next(ge8))
    #
    <generator object func1 at 0x000002F5E9F55F68>
    0
    1
    2
    3
    1000
    
    def func1(n):
        print('你好,生成器!')
        for x in range(n+1):
            print(x)
            yield x
    ge8 = func1(10)
    print(ge8)
    
    print(next(ge8))
    print(next(ge8))
    #
    <generator object func1 at 0x000001A6E4845FC0>
    你好,生成器!
    0
    0
    1
    1
    
    # 生成器生成的数据的规律:奇数就返回他本身。偶数就返回他的二倍
    def func1(n):
        for x in range(1, n):
            if x % 2:
                yield x
            else:
                yield x*2
    ge1 = func1(5)
    print(next(ge1))
    print(next(ge1))
    print(next(ge1))
    print(next(ge1))
    #
    1
    4
    3
    8
    

    相关文章

      网友评论

          本文标题:day11-课后总结

          本文链接:https://www.haomeiwen.com/subject/fivgaftx.html