请问:为什么要用yield,直接使用return不行吗

来源:5-7 使用 yield 的依赖和子依赖

慕尼黑3304007

2021-09-15 21:10

老师,您好:

1、请问共享数据库连接的时候,为什么需要使用yield呢?

2、如果使用return,可以吗?如果可以比yield优势的地方在哪里?

3、共享数据库连接的“共享"怎么理解呢?每次调用session生成函数的时候不都是新生成一个吗,为什么说是"共享"呢

写回答 关注

1回答

  • duskash
    2021-10-04 12:35:35
    1. yield 虽然也是返回函数结果, 但是相对 return, yield 可以“做到一半”就返回, 并将函数挂起在这个位置, 等其他事情做完之后, 再回头从这个位置继续往下执行.

      这里用 yield, 是因为我是先“连接上数据库”, 可以读数据啊之类的; 但是这时候前端传回来一组数据, 比如“某件商品的单价”和“商品销售数量”. 我要存的是“销售总额”, 那么后端可能会计算前两个数据的乘积——这就是“另一件事”. 等这个乘法做完了, 我就可以在当前的数据库连接状态下将数字存进去了

    2. return 运行完之后, 函数就跳出了, 不能从“半路”返回去再做. yield 的使用, 极大方便了协程的实现

    3. 这个“共享”, 我的理解是一个session 下的所有接口都是“共享”当前的数据库状态. 新的 session 的建立应该是发生在另一个客户端访问的时候. 当然, 这个“共享”也有可能是所有用户的访问, 其数据库状态都是同步的? 不是很确定了

高性能 FastAPI 框架入门精讲

FastAPI 框架快速上手开发,结合 API 交互文档逐个讲解核心模块的使用。

12295 学习 · 87 问题

查看课程

相似问题