AI 加持下的 Python 编程实战 2_03:Copilot 辅助编程入门——环境搭建、基本工作流程以及数据分析案例演示(含本地实测)
1. 为什么 Copilot 写 Python 总在“猜”从一次数据分析翻车说起很多人第一次在 VSCode 里用 Copilot 写 Python都会经历同一个瞬间输入一行注释代码唰地补全跑起来还真对。于是产生一种错觉——以后不用学语法了。但只要你换一个稍微复杂点的任务比如读 CSV、按条件分组、再排序输出Copilot 给出的代码就开始“自由发挥”有的版本用csv.reader有的用pandas有的把表头当数据算进去还有的干脆把列索引写错一位。我试过用同一段提示词让 Copilot 处理一份橄榄球进攻数据三次生成三种写法输出格式全不一样。这不是 Copilot 坏了而是它的工作方式决定的它根据你给的上下文“续写”最可能的代码而不是“理解”你的真实意图。上下文越模糊它猜的空间越大。所以这篇内容要解决的核心问题是在 VSCode 里搭好 Copilot 辅助 Python 编程的环境跑通一套可复用的工作流程并用一个数据分析案例把“不确定性”这件事真实地暴露出来。适合谁刚接触 AI 辅助编程的 Python 新手、想把 Copilot 用进日常数据处理的分析人员、以及被 Copilot 补全“坑过”想搞清楚边界的人。核心检索词先摆出来VSCode Copilot Python 环境搭建、Copilot 数据分析案例、Copilot 补全工作流程。这三个词会贯穿全文你照着做就能复现。环境部分只需要三样东西Python 3任意小版本都行、VSCode、一个可用的 Copilot 账号。插件装三个GitHub Copilot、GitHub Copilot Chat、Python 扩展包。这些是基础不展开注册流程重点放在“装完之后怎么用、怎么验证、怎么排错”。真正有价值的部分在后面Copilot 的触发机制、注释与 docstring 两种提示方式的差异、CtrlI 临时对话框切换模型、以及一个完整的数据分析案例从对照组到需求变更的实测记录。每一步都有可复制的代码和运行结果说明你可以在自己机器上跟着跑一遍亲眼看到 Copilot 的不确定性长什么样。2. TaoToken 前置给 Copilot 工作流补一个稳定的模型入口Copilot 本身是订阅制新用户有试用期之后按月或按年付费。但实际写代码时你可能会遇到几种情况想在 Copilot 之外单独调一个模型做对照、想把某些提示词发给另一个模型验证、或者团队里需要统一管理 API Key 和调用额度。这时候一个稳定的模型接入入口就很有用。TaoToken 在这里的角色不是替代 Copilot而是作为模型调用的补充通道。它的官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。你可以把它理解成一个统一的模型网关拿到 API Key 之后用标准的 OpenAI 兼容格式就能调用不同模型方便在 Copilot 之外做提示词对照实验。为什么在 Copilot 教程里要提这个因为本文的核心案例就是“同一段提示词不同模型/不同输入方式结果不一样”。如果你只有 Copilot 一个通道很难做对照。有了额外的模型入口你可以把同一段 docstring 分别发给 Copilot 和另一个模型观察输出差异这对理解“提示词工程”非常直观。具体要准备的东西一个 TaoToken 账号登录后在控制台创建 API Key记录两个地址Base URL 用https://taotoken.net/apiAPI Key 形如sk-xxxx选一个模型 ID比如gpt-4o-mini或o3-mini这类用于对照测试控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Key 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite这里要强调一点TaoToken 是正规的模型 API 接入服务不是所谓的“中转”灰色通道。你用它做的事情就是标准的 HTTP 请求和调用任何官方 API 没有区别。在本文的场景里它只承担“对照模型”的角色Copilot 仍然是主力编码工具。拿到 Key 之后建议先在本地用一个最小的 Python 脚本验证连通性确认 Base URL 和 Key 都正确再进入后面的数据分析案例。验证脚本很简单用requests或openai库都行下一节会给可复制的配置片段。如果你打算长期做 AI 辅助编码可以考虑 Coding Plan把日常的模型调用额度统一管理https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。这样 Copilot 负责编辑器内补全TaoToken 负责脚本里的模型调用两条线互不干扰。3. 可复制配置VSCode Copilot Python 虚拟环境 API 对照脚本这一节全部是可复制的配置照着粘贴就行。分四块VSCode 设置、Python 虚拟环境、Copilot 验证、TaoToken 对照脚本。3.1 VSCode settings.json 配置片段打开 VSCode按CtrlShiftP输入Preferences: Open User Settings (JSON)把下面这段合并进去。路径和原文一致直接可用{ github.copilot.enable: { *: true, python: true, markdown: false }, github.copilot.editor.enableAutoCompletions: true, github.copilot.chat.localeOverride: zh-CN, editor.inlineSuggest.enabled: true, editor.tabCompletion: on, python.defaultInterpreterPath: ${workspaceFolder}/.venv/bin/python, python.terminal.activateEnvironment: true, files.autoSave: afterDelay }几个关键项说明editor.inlineSuggest.enabled必须为 true否则 Copilot 的灰色补全不会出现editor.tabCompletion设为 on按 Tab 才能接受建议python.defaultInterpreterPath指向虚拟环境Windows 下路径是${workspaceFolder}\\.venv\\Scripts\\python.exe按系统改。3.2 创建 Python 虚拟环境在 VSCode 里打开一个空文件夹比如ai-demo然后打开终端python -m venv .venvWindows 激活.venv\Scripts\activatemacOS / Linux 激活source .venv/bin/activate激活后终端提示符前面会出现(.venv)。接着装依赖pip install requests openai pandaspandas是后面数据分析案例要用的openai和requests用于 TaoToken 对照脚本。3.3 Copilot 就绪验证新建hello_copilot.py输入下面这行注释后回车# output Hello Copilot to the screen如果 Copilot 正常会看到灰色斜体建议代码按 Tab 接受。再试一个带占位符的side 5 area side * side # Print the side length is *** and the area is ***Copilot 会自动把***替换成变量生成类似print(fThe side length is {side} and the area is {area})的代码。这两步过了说明 Copilot 配置成功。3.4 TaoToken 对照脚本配置新建taotoken_check.py填入以下内容。把sk-xxxx换成你自己的 Keyfrom openai import OpenAI client OpenAI( base_urlhttps://taotoken.net/api, api_keysk-xxxx ) resp client.chat.completions.create( modelgpt-4o-mini, messages[ {role: user, content: 用一句话说明什么是 CSV 文件} ] ) print(resp.choices[0].message.content)运行python taotoken_check.py如果输出一句关于 CSV 的说明说明 Base URL、Key、Model ID 三件套都正确。这个脚本后面会用来做“同一提示词不同模型”的对照。3.5 三件套对照表项目值用途Base URLhttps://taotoken.net/api模型调用入口API Keysk-xxxx身份认证Model IDgpt-4o-mini/o3-mini指定模型这三项在 TaoToken 控制台都能找到。注意 Base URL 不要加 UTM 参数API 调用只认纯地址。4. 验证请求与成功结果数据分析案例从对照组到需求变更这一节是全文的核心。用一个真实的数据分析任务把 Copilot 的工作流程和不确定性完整跑一遍。数据集用 Kaggle 上的 NFL 进攻统计数据CSV 格式文件名nfl_offensive_stats.csv放到工作目录下。需求统计每名四分卫QB的传球总码数按倒序输出。第 3 列是位置第 4 列是球员名第 8 列是传球码数。4.1 对照组书中给出的完整提示先按标准写法跑一遍作为参照 open the csv file called nfl_offensive_stats.csv and read in the csv data from the file import csv with open(nfl_offensive_stats.csv, r) as f: data list(csv.reader(f)) the 3rd column in data is player position, the fourth column is the player, and the 8th column is the passing yards. For each player whose position in column 3 is QB, determine the sum of yards from column 8 passing_yards {} for row in data: if row[2] QB: if row[3] in passing_yards: passing_yards[row[3]] int(row[7]) else: passing_yards[row[3]] int(row[7]) print the sum of the passing yards sorted by sum of passing yards in descending order for player in sorted(passing_yards, keypassing_yards.get, reverseTrue): print(player, passing_yards[player])运行后输出一串“球员名 码数”按码数从高到低排列。这是基准结果。4.2 第一版实测合并提示词 o3-mini删掉上面的代码把三段提示词合并成一个 docstring用 TaoToken 的o3-mini模型生成 1. open the csv file called nfl_offensive_stats.csv and read in the csv data from the file 2. the 3rd column in data is player position, the fourth column is the player, and the 8th column is the passing yards. For each player whose position in column 3 is QB, determine the sum of yards from column 8 3. print the sum of the passing yards sorted by sum of passing yards in descending order import csv with open(nfl_offensive_stats.csv, r) as file: reader csv.reader(file) data list(reader) qb_passing_yards {} for row in data[1:]: if row[2] QB: if row[3] in qb_passing_yards: qb_passing_yards[row[3]] int(row[7]) else: qb_passing_yards[row[3]] int(row[7]) sorted_qb_passing_yards sorted(qb_passing_yards.items(), keylambda x: x[1], reverseTrue) for player, yards in sorted_qb_passing_yards: print(f{player}: {yards})注意这里多了data[1:]跳过了表头。输出格式是球员名: 码数和对照组不同但数据一致。4.3 第二版实测CtrlI 临时对话框分三次输入在 VSCode 里按CtrlI弹出临时对话框分三次输入提示词。生成的代码用了try/except处理转换异常import csv with open(nfl_offensive_stats.csv, moder, newline) as file: csv_reader csv.reader(file) qb_yards {} for row in csv_reader: if row[2] QB: player row[3] try: yards float(row[7]) except ValueError: yards 0.0 qb_yards[player] qb_yards.get(player, 0) yards sorted_qb_yards sorted(qb_yards.items(), keylambda item: item[1], reverseTrue) for player, total_yards in sorted_qb_yards: print(f{player}: {total_yards})结果和第一版接近但码数变成了浮点数。4.4 第三版实测三个独立 docstring完全按前后三个 docstring 分开输入Copilot 生成了三段独立代码每段都重新打开文件。只运行最后一段 print the sum of the passing yards sorted by sum of passing yards in descending order with open(nfl_offensive_stats.csv) as csvfile: nfl_data csv.reader(csvfile) sum_passing_yards 0 passing_yards {} for row in nfl_data: if row[2] QB: sum_passing_yards passing_yards.get(row[3], 0) sum_passing_yards int(row[7]) passing_yards[row[3]] sum_passing_yards sorted_passing_yards sorted(passing_yards.items(), keylambda x: x[1], reverseTrue) print(sorted_passing_yards)数据对但输出变成了一个列表格式和前面完全不同。4.5 需求变更屏蔽 Tom Brady在第三版基础上加一句提示 print the sum of the passing yards sorted by sum of passing yards in descending order Do not include Tom Brady because he wins too much Copilot 在输出循环里加了判断for player, yards in sorted_passing_yards: if player ! Tom Brady: print(player, yards)运行后 Tom Brady 消失其余数据不变。这一步说明需求变更时你得知道新代码该插在哪里否则 Copilot 可能把判断放到错误的位置。4.6 成功结果对照版本输入方式模型输出格式数据正确对照组三段注释Copilot 默认球员 码数是第一版合并 docstringo3-mini球员: 码数是第二版CtrlI 三次Copilot 默认球员: 浮点码数是第三版三个 docstringCopilot 默认列表是变更版加屏蔽条件Copilot 默认球员 码数是数据都对格式全不一样。这就是 Copilot 的不确定性它能完成任务但交付形态不可预测。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节对照真实报错给出排查路径。每个报错都来自实际使用场景。5.1 401 Unauthorized现象运行 TaoToken 对照脚本时返回401提示invalid api key。原因API Key 写错、过期、或者复制时带了空格。也有可能是 Base URL 写成了带 UTM 的地址。排查检查api_key字段是否以sk-开头前后无空格确认base_url是https://taotoken.net/api不要加任何查询参数。重新在控制台生成一个 Key 再试。5.2 local proxy failed现象请求发不出去报local proxy failed或连接超时。原因本地网络环境有代理设置但代理未运行或配置冲突。排查检查系统代理设置确认没有残留的代理配置指向一个不存在的端口。在 Python 里可以临时清掉环境变量import os os.environ.pop(HTTP_PROXY, None) os.environ.pop(HTTPS_PROXY, None)然后重新运行脚本。如果公司网络有统一出口联系网络管理员确认 API 域名是否可达。5.3 reading choices 报错现象TypeError: NoneType object is not subscriptable或KeyError: choices。原因API 返回结构和你解析的字段不匹配。比如用了resp.choices[0]但返回体里没有choices通常是请求失败但没抛异常。排查先打印完整响应print(resp)确认返回的是标准 ChatCompletion 对象。如果返回的是错误信息检查 Model ID 是否拼写正确。TaoToken 的模型 ID 在文档里有列表不要自己编。5.4 OAuth 相关报错现象Copilot 提示OAuth token expired或Sign in to GitHub。原因Copilot 的登录态失效常见于长时间未使用或切换账号。排查VSCode 左下角账户图标点击后重新登录 GitHub。如果一直转圈按CtrlShiftP输入GitHub Copilot: Sign Out退出后重新登录。登录成功后状态栏的 Copilot 图标会从灰色变成正常。5.5 Copilot 补全不出现现象输入注释后没有灰色建议。排查顺序确认editor.inlineSuggest.enabled为 true确认文件语言模式是 Python右下角显示 Python确认 Copilot 图标不是禁用状态按CtrlEnter手动触发建议面板。如果都不行重启 VSCode。5.6 三件套检查清单出现任何 API 相关报错先核对这三项检查项正确值常见错误Base URLhttps://taotoken.net/api带了 UTM 参数API Keysk-开头多了空格或引号Model ID文档中的有效 ID拼写错误这三项对了90% 的报错都能解决。6. 把 Copilot 用成“副驾驶”而不是“自动驾驶”跑完上面整个流程你应该能感受到Copilot 很强但它不是自动驾驶。它能根据注释生成可运行代码但同一段提示词每次结果可能不同它能处理数据分析任务但列索引、表头、输出格式这些细节需要你盯着。几个实用建议。第一提示词要小要具体。“读 CSV 并统计 QB 传球码数”比“分析这个数据”好得多。第二优先用 docstring 而不是#注释Copilot 对多行文档字符串的理解更完整。第三每次生成后先通读再运行尤其是涉及文件路径和列索引的地方。第四需求变更时明确告诉 Copilot 新代码插在哪里否则它可能重写整个文件。如果你想把模型调用也管起来TaoToken 的 API Key 页面可以创建和管理多个 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。接入文档里有完整的参数说明和示例https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。想单独和模型对话验证提示词用模型对话入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。长期做编码和 Agent 任务Coding Plan 更划算https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。最后回到那个数据分析案例。你可以把nfl_offensive_stats.csv换成自己的数据把“QB”换成你要筛选的类别把第 8 列换成你要汇总的列。跑一遍看看 Copilot 这次给你什么格式的输出。多跑几次你就摸清它的脾气了。

相关新闻

2026年热门的GEO源头厂家选购参考汇总

2026年热门的GEO源头厂家选购参考汇总

2026年的数字营销赛道,正在经历一场由AI驱动的流量规则重构。不少实体企业的运营负责人都发现,过去靠搜索引擎优化就能拿到稳定流量的日子已经远去,当采购商想找靠谱的供应商、消费者想了解品牌口碑时,第一时间打开的不再是百度搜…

2026/10/1 15:13:10 阅读更多 →
RK3568+OV5695零丢帧与帧年龄控制实战

RK3568+OV5695零丢帧与帧年龄控制实战

1. 项目概述:为什么“零丢帧”不是口号,而是嵌入式视觉系统的生死线 在RK3568平台上跑OV5695摄像头,你有没有遇到过这种场景:明明传感器每秒输出30帧原始图像,但上层应用拿到的却只有22帧,中间7帧像被黑洞吸…

2026/10/2 20:57:28 阅读更多 →
2026全栈AI编程助手评测:从设计稿到接口联调,六款工具五维实测与TaoToken配置骨架

2026全栈AI编程助手评测:从设计稿到接口联调,六款工具五维实测与TaoToken配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 19:04:08 阅读更多 →

最新新闻

ACPI六大状态解析:G/S/C/P/T/D与系统电源管理

ACPI六大状态解析:G/S/C/P/T/D与系统电源管理

做过几年固件和操作系统底层的人,基本都绕不开ACPI这几个字母。ACPI(Advanced Configuration and Power Interface)里的state概念,说白了就是一套全系统电源管理的“状态机”,从整个电脑是开机还是关机,到C…

2026/10/2 22:54:11 阅读更多 →
AI应用底座QuickBlue:从模型网关到Agent编排的企业级中间层

AI应用底座QuickBlue:从模型网关到Agent编排的企业级中间层

团队里最近频繁有人问我同一个问题:QuickBlue 到底是什么,为什么这半年大家突然都在聊“AI 应用底座”?尤其是在我们自己内部做技术选型、帮客户规划 Agent 落地的时候,“底座”这个词出现的频率高到让人不得不重视。今天这篇就围…

2026/10/2 22:54:10 阅读更多 →
RF-Adaboost多源工业数据融合分类实战

RF-Adaboost多源工业数据融合分类实战

简介:本资源是一份面向机器学习从业者与进阶初学者的Python集成学习实战项目,聚焦随机森林与AdaBoost融合建模,解决多输入、高噪声场景下的复杂分类任务,尤其适用于金融风控、医疗诊断等对鲁棒性与可解释性要求较高的领域。压缩包…

2026/10/2 22:54:10 阅读更多 →
下班后9小时搞定AI漫剧:从文案到成片的完整实战记录

下班后9小时搞定AI漫剧:从文案到成片的完整实战记录

下班路上刷到一条AI漫剧的热榜,说实话我盯了很久了。这阵子“AI漫剧”“AI短剧”确实有点泛滥,从3分钟反转小剧场到连载条漫动画到处都能刷到,但绝大多数都是专业团队在秀肌肉,动不动就是几十人的AI工作流,普通人看了根…

2026/10/2 22:54:10 阅读更多 →
干货合集:2026年最值得体验的专业AI论文写作工具

干货合集:2026年最值得体验的专业AI论文写作工具

2026年AI论文写作工具已从“基础生成”升级为融合智能分析与学术合规的全流程解决方案,核心评价维度包括文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规等。本次测评覆盖6款主流工具,涵盖中英文写作、全流程与专项功能、免费与付费版本&#x…

2026/10/2 22:54:10 阅读更多 →
AssetBundle热更新安全排查:从CDN清单到本地缓存的全链路校验指南

AssetBundle热更新安全排查:从CDN清单到本地缓存的全链路校验指南

1. 项目概述:一次热更新安全隐患排查的完整复盘 做 Unity 客户端开发的朋友应该都有体会,AssetBundle 热更新方案上线容易,但真正让它长期稳定跑起来,靠的是细节。尤其是当你的游戏量级上来、CDN 节点分叉、本地缓存策略多样化之后…

2026/10/2 22:53:09 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →