news 2026/5/9 7:03:24

return、rasie、yiled的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
return、rasie、yiled的区别

一、return:函数返回结果 + 终止执行

唯一用途是从函数中返回指定结果,并立即终止函数的执行,函数内return之后的代码不会被执行

二、raise:主动触发异常 + 终止异常传播前的执行

主动手动抛出指定的异常对象,中断当前的程序执行流程,若抛出的异常未被try...except捕获,程序会直接崩溃并输出异常信息。

三、yield:生成器产出值 + 挂起函数(保留状态)

作用是产出一个值给生成器的调用方,同时挂起当前函数的执行状态(保留所有变量、执行位置),待下一次通过next()for循环触发时,从挂起的位置继续执行,直到再次遇到yield或函数结束。

1.流式输出示例

import uvicorn from fastapi import FastAPI import asyncio from fastapi.responses import StreamingResponse from pydantic import BaseModel import json app = FastAPI(title="SSE 流式响应示例") class QueryModel(BaseModel): a: str async def async_query(a: str) -> str: await asyncio.sleep(3) return f"查询结果:参数={a},查询成功" # ✅ 正确:aa 返回生成器对象,不 await async def aa(a: str): """ 中间层函数 - 只负责创建和返回生成器 不要 await!不要 await!不要 await! """ # 可以在这里做参数校验、日志记录、权限检查等 print(f"[中间层] 收到参数: {a}") b="haha" # 直接返回生成器对象,不执行它 return event_generator(a,b) async def event_generator(a: str,b:str): print(b) """SSE 异步生成器""" yield f"data: {json.dumps({'status': '开始查询', 'progress': 0})}\n\n" # 立即刷新缓冲区 await asyncio.sleep(0) # 分阶段发送进度 for i in range(1, 4): await asyncio.sleep(1) yield f"data: {json.dumps({'status': f'查询中...{i}秒', 'progress': i * 33})}\n\n" result = await async_query(a) yield f"data: {json.dumps({'status': '完成', 'result': result, 'progress': 100})}\n\n" @app.post("/select") async def select(q: QueryModel): # ✅ 从中间层获取生成器 generator = await aa(q.a) # await aa() 是等待 aa 函数本身,不是等待生成器 return StreamingResponse( generator, # 传入生成器对象 media_type="text/event-stream", # ← 2. 告诉浏览器:这是SSE流 headers={ # ← 3. 禁用所有缓冲机制 "Cache-Control": "no-cache, no-transform", "Connection": "keep-alive", "X-Accel-Buffering": "no", } ) if __name__ == '__main__': uvicorn.run("main:app", host="127.0.0.1", port=8000)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:58:18

SeqGPT-560m轻量教程:三类任务prompt模板的token长度与效果关系

SeqGPT-560m轻量教程:三类任务prompt模板的token长度与效果关系 在实际部署轻量级生成模型时,我们常遇到一个看似简单却影响深远的问题:同样的任务,用长一点的提示词还是短一点的,效果更好?很多人凭经验写…

作者头像 李华
网站建设 2026/5/1 6:16:14

隐私无忧!Qwen3-ASR-0.6B本地语音识别全流程体验

隐私无忧!Qwen3-ASR-0.6B本地语音识别全流程体验 你是否曾为会议录音转文字而犹豫——该上传到哪个平台?会不会被存档分析?有没有可能泄露敏感内容?当“语音转文字”成为日常刚需,隐私安全不该是妥协项,而…

作者头像 李华
网站建设 2026/5/9 19:13:01

Qwen3-ASR-1.7B性能实测:RTF实时因子0.32,4GB显存下每秒处理3.2倍音频

Qwen3-ASR-1.7B性能实测:RTF实时因子0.32,4GB显存下每秒处理3.2倍音频 1. 为什么这次语音识别实测值得你停下来看一眼 你有没有遇到过这样的场景:刚开完一场两小时的跨部门会议,录音文件有1.8GB,导出字幕时发现“项目…

作者头像 李华
网站建设 2026/5/3 3:52:37

Qwen1.5-0.5B-Chat中文理解强?对话质量实测对比报告

Qwen1.5-0.5B-Chat中文理解强?对话质量实测对比报告 1. 为什么小模型也能聊得明白——从需求出发看轻量级对话的真正价值 你有没有遇到过这些场景: 在老旧办公电脑上想试试AI助手,但显卡不支持大模型;想给客户部署一个嵌入式客…

作者头像 李华
网站建设 2026/5/2 17:42:27

车规级C#开发全流程落地手册(ASP.NET Core + AUTOSAR兼容方案首次公开)

第一章:车规级C#开发概述与行业标准解读车规级软件开发对可靠性、实时性、功能安全与网络安全提出远超消费级应用的要求。C# 作为 .NET 生态的主流语言,虽非传统嵌入式首选,但在智能座舱、车载信息娱乐系统(IVI)、域控…

作者头像 李华