八.再次学习Python_三元表达式 列表解析 生成器

再次学习Python_三元表达式 列表


    #三元表达式
        # res="大于10" if 15>10 else "小于10"
    #列表解析式
        # res=[i for i in range(20)]

    #迭代器    实现了__iter__()和__next__()方法的类对象

        #利用__iter__()生成迭代器
            # str="12313"
            # it=str.__iter__()
            # print(list(it))
        #生成迭代器函数
            # def pro():
            #     print("Start...")
            #     print("1...")
            #     yield 1
            #     print("2....")
            #     yield 2
            # t=pro()
            # print(next(t))
            # print(t.__next__())


#   16.生成器   是一类特殊的迭代器

#作用:延迟操作
#注意:生成器只能遍历一次

#调用生成器函数的三种形式
#  1.__next__() 获取yield返回值
#  2.next()     获取yield返回值
#  send()       获取yield返回值,并可以对yield进行赋值

    # 生成器表达式
        # res=(i for i in range(15))
#生成器函数  利用yield 进行延迟操作

#yield  可以返回值,并不退出,起到阻塞效果

    # def pro():
    #     print("Start...")
    #     print("1...")
    #     yield 1
    #     print("2....")
    #     yield 2
    # t=pro()
    # print(next(t))
    # print(t.__next__())




#   17.生产者消费者模型

        # def producer(l):            #定义生产者
        #     print("包子店开门了..")
        #     t = customer("tom")     #生成生成器函数
        #     c = customer("cat")     #生成生成器函数
        #     t.send(None)            #跳过第一次yield阻塞
        #     c.send(None)            #跳过第一次yield阻塞
        #     for i in l:             #循环生成包子
        #         print("生成包子[%s]"%i)     #生成包子
        #         t.send("包子【%s】"%i)      #通过send()给包子赋值
        #         c.send("包子【%s】"%i)      #通过send()给包子赋值
        #
        # def customer(name):         #定义消费者
        #     print("%s   Begin   吃包子..."%(name))
        #     while True:
        #         baozi=yield None    #进行阻塞
        #         print("%s 吃了 %s"%(name,baozi))
        #
        #
        # producer(range(1000))       #测试


解析 生成器

猜你喜欢

转载自blog.csdn.net/qq_39663113/article/details/85148851