本文目录
  1. 4.生成器
  2. 1.生成器表达式
  3. 2.函数生成器
  4. 3.生成器表达式的输出方式
  5. 5.协程
  6. 1.协程是什么
  7. 2.协程的实现
  8. 3.协程的特点

Python 生成器与协程

理解生成器表达式、函数生成器和协程的使用方式与特点。

4.生成器

1.生成器表达式

t1=(x for x in range 5)

2.函数生成器

#yeild

def fn():
    print("函数开始了")
    yield
    print("函数继续执行了")
    
#函数生成器返回的结果是yield
#一般函数生成器没有return
#没有下一个yield也会报错
#函数执行到yield就会暂停,取下一个yield时会再继续运行
    

3.生成器表达式的输出方式

#next(t1)

#for i in t1:
#print(t1)

#一次只输出一个结果
#所以结果输出完再继续调用就会报错

5.协程

1.协程是什么

协程可以在单线程中并发

2.协程的实现

协程是基于生成器实现的

#await不能单独使用 需要搭配 async

#流程
#1.创建函数 ——await和async搭配使用
#2.创建入口函数
#3.定义协程
#4.运行协程

#调包
import asyncio
#定义异步函数(async-wait搭配使用)
#调用函数返回的是协程对象
async def eat():
    print("开始吃")
    await asyncio.sleep(2)
    print("吃饱了")

async def drink():
    print("开始喝")
    await asyncio.sleep(2)
    print("喝饱了")

#创建入口函数
async def main():
    task1=asyncio.create_task(eat())
    task2=asyncio.create_task(drink())
    await task1
    await task2

#运行协程
asyncio.run(main())

3.协程的特点

协程可以使用await主动让出控制权,从而提高程序运行效率