简介:本资源是一份面向Python开发者与NLP实践者的DeepSeek API系统性入门指南,聚焦API调用全流程实战,解决从零注册、密钥管理、环境配置到多场景集成落地的核心问题。内容覆盖账号注册与邮箱验证、API Key安全存储规范、requests库安装与HTTP请求构建(含Authorization头、JSON Body结构、模型参数设置)、以及文本生成、情感分析、代码辅助等典型应用案例,同时嵌入异常处理与安全防护要点,助力开发者快速构建智能客服、内容生成等AI服务。资源为单文件PDF文档,共1个659KB的高质量技术手册,排版清晰、步骤翔实、代码可直接复用,适合作为日常开发参考与团队内部培训材料。目前已有2353人学习下载,内容源自一线开发者实践沉淀,兼具技术深度与工程实用性。
1. DeepSeek API 是什么?——别被“API”两个字母吓住,它其实就是你和大模型之间的微信对话框
你有没有试过,在手机上打开一个智能助手App,输入“帮我写一封辞职信”,几秒钟后,一封措辞得体、语气平和的信就生成出来了?你没写一行代码,也没训练模型,但结果实实在在地帮你解决了问题。DeepSeek API,就是把这种能力“拆包”后,交到你手里的那根线——它不是模型本身,也不是一个现成的App,而是一套标准化的“对话协议”:你按约定格式发一条消息(比如“用Python写个计算器”),它按约定格式回你一条消息(比如一段可运行的代码),中间所有复杂的推理、计算、生成,都由DeepSeek的服务器在后台悄悄完成。
对零基础的新手来说,把它想象成“大模型的微信接口”最贴切:
- 你的程序是“你”,DeepSeek服务器是“对方”;
api_key就是你俩的“好友验证密码”,没它,发不出第一条消息;https://api.deepseek.com/chat/completions是你们的“聊天窗口地址”,不是网址,而是“对话入口”;messages列表就是你打字的内容——系统角色设人设(“你是个严谨的数学老师”),用户角色写需求(“请推导勾股定理”),它就照着人设和需求认真作答。
它不强迫你懂神经网络、不考你反向传播,只要你能写几行Python、会拼JSON、知道怎么发HTTP请求,就能立刻调用当前最先进的中文大模型能力。适合谁?不是非要算法博士,而是:想给自己的小工具加个“AI大脑”的学生党、需要快速验证创意的产品经理、正在学Python想做个真实项目的初学者——只要你想让程序“开口说话”“动笔写代码”“读懂一段话的情绪”,DeepSeek API 就是你今天就能上手的第一块AI积木。
2. 为什么新手要从 DeepSeek API 入门?——避开“从零造轮子”的坑,先用现成的“智能引擎”跑通第一个Hello World
很多新手一上来就想“自己训练一个模型”,结果卡在环境配置三天、数据清洗一周、显存不足报错十次……最后连“你好”都没输出,信心直接清零。DeepSeek API 的价值,恰恰在于它把所有这些黑匣子全封装好了,只留给你一个干净、稳定、文档清晰的“调用开关”。这不是偷懒,而是符合学习规律的聪明路径:先理解“AI能做什么”,再琢磨“它为什么能做”,最后才动手“让它按我的方式做”。
2.1 它解决的是新手最痛的三个“断层”
断层一:模型能力 vs. 工程落地
你知道大模型很厉害,但不知道怎么让它为你服务。DeepSeek API 把“调用模型”这件事,降维成“发一条带格式的HTTP请求”——就像你用浏览器访问网页一样自然,只是目标从https://baidu.com换成了https://api.deepseek.com/chat/completions。
断层二:理论概念 vs. 可运行代码
“自然语言处理”“token”“temperature”这些词听着玄乎,但在API里,它们就是几个参数:max_tokens=512控制回答长度,temperature=0.7控制回答的“发挥空间”。你改一个数字,立刻看到结果变化,概念瞬间具象化。
断层三:单点功能 vs. 场景闭环
不是只能“问答”,而是提供一整套开箱即用的能力组合:文本生成、多轮对话、情感分析、代码补全、内容摘要……你不需要分别找五个库、配五套环境,一个API Key,全部打通。比如做一个读书笔记工具:用/chat/completions总结章节,用/sentiment-analysis判断作者态度,用/code-generation把笔记转成Markdown表格——全在一个账号下完成。
2.2 和其他AI服务比,它对新手更“友好”的三个细节
- 中文优化真到位:不像某些国际模型,对中文长文本容易“断句失忆”或乱码,DeepSeek 在训练时就深度吃透中文语法、成语、古诗、技术文档,你问“解释《论语》‘学而时习之’的现代意义”,它不会答非所问。
- 错误提示不装神弄鬼:认证失败?它明确告诉你
401 Unauthorized: Invalid API key,而不是甩你一串看不懂的Error code: 0x8F3A;参数错了?直接指出"model" must be one of ["deepseek-chat", "deepseek-code"],省去你翻文档半小时。 - 免费额度够练手:新注册用户通常有可观的初始调用额度,足够你跑完几十个完整Demo、调试十几次参数、甚至搭出一个能用的小工具,完全不用为第一笔账单焦虑。
所以,别再纠结“我该不该学AI”——你只需要问自己一句:“我想不想让我的程序,今天就开始理解、生成、分析中文?” 如果答案是肯定的,DeepSeek API 就是你此刻最该打开的那扇门。
3. 第一步:从注册到跑通第一个“你好世界”,手把手带你走完全流程(含避坑指南)
现在,我们扔掉所有术语,像教朋友一样,一步步带你完成从零到第一个成功响应的全过程。整个过程不超过15分钟,你只需要一台能上网的电脑、一个浏览器、和一个能运行Python的环境(哪怕只是刚装好的IDLE)。
3.1 注册账号 & 获取你的第一把“钥匙”(API Key)
操作步骤(全程截图级指引):
- 打开浏览器,访问官网:
https://platform.deepseek.com(注意是platform,不是www或其他变体);- 点击右上角“注册”按钮(不是“登录”,新手常点错);
- 填写邮箱(务必真实!后续验证邮件会发到这里)、设置密码(建议用密码管理器生成)、确认密码;
- 关键一步:勾选下方“我已阅读并同意……”的协议框(不勾选无法提交);
- 点击“注册”按钮,页面跳转后,立即查收邮箱——你会收到一封主题为“请验证您的 DeepSeek 账号”的邮件;
- 打开邮件,点击里面的“验证邮箱”蓝色按钮(不是复制链接手动粘贴,有些邮箱客户端会截断链接);
- 验证成功后,回到浏览器,用刚注册的邮箱和密码登录;
- 登录后,鼠标悬停在右上角头像上 → 点击弹出菜单中的“API Keys”(不是“Settings”或“Billing”);
- 在API Keys页面,点击“Create new API Key”(创建新密钥);
- 系统生成一串类似
sk-xxx...xxx的长字符串,立刻复制它(点击右侧复制图标),然后——
⚠️ 重要提示:这个密钥只显示这一次!关闭页面或刷新后将永远无法再次查看。
为什么这步必须亲手做?
因为API Key 就是你的“数字身份证”,它直接关联你的调用额度和账单。网上流传的“共享Key”或“教程里写的示例Key”,要么已失效,要么属于他人,用它等于拿别人的钱包买东西——轻则请求被拒,重则触发安全风控,导致你的账号被临时冻结。亲手注册、亲手复制、亲手保管,是每个开发者的第一课。
3.2 安装Python依赖:只需一条命令,装好“发消息的快递员”
DeepSeek API 本质是HTTP服务,任何能发HTTP请求的语言都能调用。但Python生态最成熟、错误提示最友好,特别适合新手。我们用最轻量的方式启动:
操作步骤:
- 打开你的命令行工具:
- Windows:按
Win+R,输入cmd,回车;- macOS:打开“访达” → “应用程序” → “实用工具” → 双击“终端”;
- Linux:Ctrl+Alt+T 快捷键。
- 输入以下命令(逐字敲,别漏空格):
pip install requests
- 按回车,等待屏幕滚动,直到出现
Successfully installed requests-x.x.x字样(x.x.x是版本号)。
这条命令在干什么?
requests是Python里最常用的HTTP库,它就像一个训练有素的快递员:你告诉它“把这封信(你的请求数据)送到这个地址(API URL)”,它就自动打包、选择最优路线、处理网络波动、带回回执(API响应)。没有它,你得自己写几十行代码处理底层网络协议——而新手第一课,不该是学怎么修快递车,而是学会怎么写信。
3.3 写下你的第一行调用代码:不是“Hello World”,而是“你好,DeepSeek!”
现在,我们把前面拿到的API Key、安装好的requests库、以及DeepSeek的“聊天窗口地址”,组装成第一段可运行的Python代码。请严格按以下步骤操作,不要跳步:
操作步骤:
- 用任意文本编辑器(记事本、TextEdit、VS Code均可)新建一个文件;
- 将以下代码完整复制进去(注意:替换第4行的
your_api_key_here为你自己刚复制的密钥!):import requests # 替换这一行!把你复制的API Key粘贴在这里,引号不能删 api_key = "your_api_key_here" # 这是DeepSeek聊天接口的固定地址,别改 url = "https://api.deepseek.com/chat/completions" # 请求头:告诉服务器“我是谁”和“我发的是什么格式” headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } # 请求体:你要说的话,按JSON格式组织 data = { "model": "deepseek-chat", "messages": [ {"role": "system", "content": "你是一个友善、简洁的助手,只回答问题,不加额外解释"}, {"role": "user", "content": "你好,DeepSeek!"} ] } # 发送请求,并等待回复 response = requests.post(url, headers=headers, json=data) # 检查是否成功(200=成功,其他数字=出错了) if response.status_code == 200: result = response.json() # 从返回的复杂数据里,精准提取出AI的回答 answer = result['choices'][0]['message']['content'] print("DeepSeek说:", answer) else: print("请求失败!状态码:", response.status_code) print("错误信息:", response.text)
- 将文件保存为
first_call.py(后缀必须是.py);- 回到命令行,用
cd命令切换到你保存first_call.py的文件夹(例如,如果文件在桌面,Windows输入cd Desktop,macOS输入cd ~/Desktop);- 输入命令运行:
python first_call.py
- 按回车,等待2-5秒(网络正常情况下),你应该看到类似这样的输出:
DeepSeek说: 你好!很高兴见到你。有什么我可以帮你的吗?
这段代码每一行都在干什么?
import requests:召唤快递员;api_key = "...":把你的“身份证”交给快递员;url = "https://...":告诉快递员“送到哪家”;headers:快递单上的“寄件人信息”(Authorization)和“包裹类型”(Content-Type);data:你真正想说的话,用标准JSON格式写好(system设人设,user写问题);requests.post(...):快递员出发;response.status_code == 200:检查快递是否签收成功;result['choices'][0]['message']['content']:从快递盒子里,一层层拆开包装(choices→0→message→content),拿出最终答案。
这就是API调用的最小闭环:发请求 → 收响应 → 提取结果。
3.4 新手必看:常见问题排查与避坑指南(血泪经验总结)
刚上手时,90%的失败都集中在几个固定环节。别慌,对照下面清单,3分钟内定位问题:
现象1:运行代码后,报错
ModuleNotFoundError: No module named 'requests'
原因:pip install requests命令没执行成功,或者你在另一个Python环境中运行了代码(比如系统自带Python和Anaconda Python混用)。
解决:
- 在命令行输入
python -m pip list,看列表里是否有requests;- 如果没有,重新执行
pip install requests;- 如果有,但还是报错,试试
python -m pip install requests(强制用当前python对应的pip);- 终极方案:卸载重装Python,勾选“Add Python to PATH”(Windows)或使用
brew install python(macOS)。
现象2:代码运行后,打印
请求失败!状态码: 401
原因:API Key 错误。这是新手最高频的坑!可能情况:
- 复制时多了一个空格或换行符(尤其从网页复制);
- Key里有大小写混淆(如把
l当1,O当0);- 使用了旧Key(重新生成过但没更新代码);
- Key被意外修改(比如编辑器自动格式化时删了引号)。
解决:- 打开DeepSeek平台的API Keys页面,重新生成一个新Key,复制,粘贴到代码中;
- 粘贴后,用鼠标选中引号内的全部内容,按
Ctrl+C再Ctrl+V到记事本里,确认没有多余字符;- 检查代码中
api_key = "..."的引号是英文半角("),不是中文全角(“”)。
现象3:代码运行后,卡住不动,十几秒后报错
ReadTimeout或ConnectionError
原因:网络无法连接到api.deepseek.com。可能情况:
- 公司/学校网络有防火墙拦截了API请求;
- 本地DNS解析失败(偶尔发生);
- 服务器临时维护(概率低,可查官方状态页)。
解决:- 换一个网络试试(比如手机热点);
- 在命令行输入
ping api.deepseek.com,看是否能通(Windows显示“来自xxx的回复”,macOS显示“64 bytes from xxx”);- 如果不通,尝试
curl -v https://api.deepseek.com(macOS/Linux)或下载curl for Windows测试;- 终极方案:在代码的
requests.post()中增加超时参数:timeout=15(单位秒),避免无限等待。
现象4:请求成功(状态码200),但打印出的
answer是空字符串或乱码
原因:JSON解析路径错误,或API返回结构变化。
解决:
- 先打印完整响应:把
print("错误信息:", response.text)改成print("完整响应:", response.text);- 观察返回的JSON结构,重点看
choices是否存在、content字段名是否一致;- 最稳妥做法:用在线JSON格式化工具(如
jsonformatter.org)粘贴响应内容,展开查看层级;- 如果结构变了(比如新版API返回
result而非choices),说明文档更新了,立刻去官网查最新示例。
现象5:反复调用后,突然报错
429 Too Many Requests
原因:触发了API的速率限制(比如1分钟内最多10次请求)。
解决:
- 不要循环快速请求,每次调用后加
import time; time.sleep(1)暂停1秒;- 查看你的账户配额(API Keys页面有实时用量统计);
- 开发阶段,用
print("调试:", response.headers.get('X-RateLimit-Remaining'))查看剩余调用次数。
4. 三个真实场景Demo:从“问天气”到“写代码”,让你亲眼看见API如何变成生产力
光会“你好”没用,得让它干实事。下面三个例子,全部基于你刚跑通的环境,只需修改几行代码,就能立刻体验不同能力。每个例子都标注了“改哪里”“为什么这么改”,拒绝无脑复制。
4.1 场景一:用它当你的“中文写作教练”(文本生成)
需求:你写了一段产品介绍草稿,但觉得太干巴,想让它润色得更生动、有感染力。
思路:把你的草稿作为user输入,用system角色设定“资深文案顾问”人设。
操作:
- 打开
first_call.py,找到data字典;- 替换
messages部分为以下内容(其他代码不变):"messages": [ {"role": "system", "content": "你是一位有10年经验的营销文案总监,擅长将技术语言转化为打动人心的故事。请用热情、简洁、有画面感的语言润色以下产品介绍,保持原意,字数控制在150字以内。"}, {"role": "user", "content": "我们的APP能自动整理会议录音,生成待办事项和关键结论。支持多语言,准确率95%。"} ]
- 保存文件,重新运行
python first_call.py。
预期效果:你会得到一段像这样的文案:“还在为会后一堆录音发愁?XX APP一键听懂会议重点!它像一位不知疲倦的超级助理,精准捕捉每句发言,自动生成待办清单和核心结论,中英日韩多语种无缝切换,准确率高达95%——让每一次会议,都成为行动的起点。”
为什么有效?system角色精准定义了AI的“身份”和“任务要求”(10年经验、热情简洁、150字),user输入提供原始素材。这比单纯说“润色一下”效果好十倍——因为AI不是猜,而是按指令执行。
4.2 场景二:让它帮你“读懂用户情绪”(情感分析)
需求:你运营一个电商店铺,每天收到大量用户评论,想快速知道哪些是好评、差评、中性评价。
思路:DeepSeek 提供专门的情感分析接口(/sentiment-analysis),比通用聊天接口更准、更快。
操作:
- 新建一个文件
sentiment.py;- 完整复制以下代码(注意替换你的API Key):
import requests api_key = "your_api_key_here" # ← 替换! # 情感分析专用接口地址 url = "https://api.deepseek.com/sentiment-analysis" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } # 分析一条真实的用户评论 data = { "text": "物流太快了!昨天下单今天就收到,包装也很用心,商品和描述一模一样,强烈推荐!", "language": "zh" # 指定中文,提升准确率 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: result = response.json() # 情感分析返回结构更简单:直接有'sentiment'和'confidence' sentiment = result.get('sentiment', 'unknown') confidence = result.get('confidence', 0.0) print(f"情感倾向:{sentiment}(置信度:{confidence:.2f})") else: print("分析失败:", response.status_code, response.text)
- 运行
python sentiment.py。
预期效果:情感倾向:positive(置信度:0.98)为什么不用聊天接口?
专用接口针对单一任务优化:模型更小、响应更快、结果字段更明确(直接返回sentiment字符串,不用层层解析JSON)。做批量分析时,效率提升50%以上。
4.3 场景三:让它“替你写代码”(代码生成)
需求:你正在学Python,需要一个函数来计算斐波那契数列前N项,但不确定怎么写递归或迭代。
思路:用/code-generation接口,明确指定语言、任务、约束条件。
操作:
- 新建
code_gen.py;- 复制以下代码(替换API Key):
import requests api_key = "your_api_key_here" # ← 替换! # 代码生成专用接口 url = "https://api.deepseek.com/code-generation" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } data = { "model": "deepseek-code", # 指定代码专用模型 "prompt": "用Python写一个函数,接收一个正整数n,返回斐波那契数列的前n项(列表形式)。要求:使用迭代法,避免递归,时间复杂度O(n)。", "language": "python", "max_tokens": 512 # 限制生成长度,防止冗余 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: result = response.json() # 代码生成接口返回'code'字段 code = result.get('code', '未生成代码') print("生成的代码:\n", code) else: print("生成失败:", response.status_code, response.text)
- 运行
python code_gen.py。
预期效果(示例):def fibonacci_sequence(n): if n <= 0: return [] elif n == 1: return [0] elif n == 2: return [0, 1] sequence = [0, 1] for i in range(2, n): next_num = sequence[-1] + sequence[-2] sequence.append(next_num) return sequence为什么强调“迭代法”“O(n)”?
大模型会按你提示词的每一个字执行。如果你只说“写斐波那契”,它可能默认用递归(对新手不友好);加上“迭代法”“O(n)”,它就严格按高性能方式实现。这就是“精准提示”的力量。
5. 下一步学什么?——从“会调用”到“会设计”,我的三步进阶路径与血泪教训
跑通第一个例子只是起点,真正的价值在于把API变成你项目里的“智能引擎”。我第一次用DeepSeek API时,也以为会发请求就够了,结果在真实项目里踩了无数坑:生成内容重复、多轮对话丢失上下文、批量处理时被限流……后来我才明白,API不是终点,而是你构建AI应用的“原材料”。下面是我用血泪经验总结的、最适合新手的三步进阶路径,每一步都附带一个可立刻实践的技巧。
5.1 第一步:掌握“上下文管理”,让AI记住你们的对话历史(避免“健忘症”)
问题:你和AI聊了5轮,第6轮问“刚才说的那个方案,能再详细点吗?”,它却一脸懵——因为默认每次请求都是独立的,没有记忆。
解决方案:把之前的messages列表完整传给下一次请求。
实操技巧:用Python列表动态累积对话# 初始化对话历史(系统设定放最前面) conversation_history = [ {"role": "system", "content": "你是一个专业的Python导师,用通俗语言解释概念,每次回答不超过100字。"} ] # 用户第一次提问 user_input_1 = "什么是列表推导式?" conversation_history.append({"role": "user", "content": user_input_1}) # 发送请求,获取AI回答 # ...(调用API代码,略)... ai_response_1 = "列表推导式是用一行代码创建列表的快捷方式,比如 [x*2 for x in range(5)] 生成 [0,2,4,6,8]。" conversation_history.append({"role": "assistant", "content": ai_response_1}) # 用户第二次提问(引用上文) user_input_2 = "能用它生成1-10的平方吗?" conversation_history.append({"role": "user", "content": user_input_2}) # 再次发送请求,这次history里已有3条记录! # ...(调用API,data['messages'] = conversation_history)...为什么这步关键?
所有真实应用(客服、写作助手、学习工具)都需要“记忆”。硬编码messages只能应付Demo,动态管理才是工程化第一步。从那以后,我每次写对话应用,都强制走一遍“初始化history → append user → append assistant → 循环”流程,再没出现过AI失忆。
5.2 第二步:学会“参数微调”,让输出更可控(告别“玄学结果”)
问题:同样的问题,AI有时回答精炼,有时啰嗦到写满一页;有时一本正经,有时天马行空——这不是AI不稳定,是你没调参。
核心参数速查表(新手必记):
| 参数名 | 类型 | 常用值 | 效果 | 新手建议 |
|---|---|---|---|---|
temperature | float (0.0-2.0) | 0.3(严谨)0.7(平衡)1.0(创意) | 控制随机性:值越小,答案越确定、越保守;越大,越发散、越有创意 | 先用0.7,遇到重复答案调低,遇到跑题调高 |
max_tokens | int | 256,512,1024 | 限制AI最多生成多少个字(token),防无限输出 | 首次设512,根据实际长度调整,避免浪费额度 |
top_p | float (0.0-1.0) | 0.9,0.95 | “核采样”,值越小,AI只从最可能的几个词里选,答案更聚焦 | 和temperature配合用,0.7+0.9是黄金组合 |
stop | list[str] | ["\n", "。"] | 遇到指定字符就停止生成,强制截断 | 写代码时加["```"],防AI多输出无关内容 |
实操技巧:用字典统一管理参数,方便实验
# 定义你的“参数配方” base_params = { "model": "deepseek-chat", "temperature": 0.5, "max_tokens": 300, "top_p": 0.9 } # 写作场景:需要严谨,降低temperature writing_params = {**base_params, "temperature": 0.3} # 创意场景:需要发散,提高temperature creative_params = {**base_params, "temperature": 0.9} # 构建data时,用字典解包 data = { **writing_params, # 先加载基础+场景参数 "messages": messages }为什么这步关键?
参数不是玄学,是杠杆。调对一个temperature,比改十次提示词更有效。从那以后,我每次实验新功能,都新建一个params.py文件,把所有测试过的参数组合存下来,再也不靠感觉瞎蒙。
5.3 第三步:构建“错误熔断机制”,让程序在API故障时不崩溃(生产环境必备)
问题:线上服务调用API,突然遇到网络抖动或服务器维护,你的程序直接报错退出,用户看到白屏——这在真实项目中是致命伤。
解决方案:用try-except捕获异常 + 设置重试 + 降级策略。
实操技巧:一个健壮的请求函数(直接复制可用)import requests import time import random def robust_api_call(url, headers, data, max_retries=3, base_delay=1): """ 健壮的API调用函数 :param max_retries: 最多重试次数 :param base_delay: 初始延迟秒数(指数退避) """ for attempt in range(max_retries + 1): try: response = requests.post( url, headers=headers, json=data, timeout=10 # 强制10秒超时 ) if response.status_code == 200: return response.json() # 成功,直接返回 elif response.status_code in [429, 503]: # 限流或服务不可用 if attempt < max_retries: # 指数退避:1s, 2s, 4s... delay = base_delay * (2 ** attempt) + random.uniform(0, 1) print(f"请求被限流或服务忙,{delay:.1f}秒后重试...") time.sleep(delay) continue else: raise Exception(f"重试{max_retries}次后仍失败,状态码{response.status_code}") else: raise Exception(f"API返回错误状态码:{response.status_code}, {response.text}") except requests.exceptions.Timeout: if attempt < max_retries: delay = base_delay * (2 ** attempt) + random.uniform(0, 1) print(f"请求超时,{delay:.1f}秒后重试...") time.sleep(delay) continue else: raise Exception("请求超时,重试后仍失败") except requests.exceptions.ConnectionError: raise Exception("网络连接失败,请检查网络") # 所有重试都失败,返回兜底答案 return {"choices": [{"message": {"content": "抱歉,当前服务繁忙,请稍后再试。"}}]} # 使用示例 result = robust_api_call(url, headers, data) answer = result['choices'][0]['message']['content'] print(answer)为什么这步关键?
API是第三方服务,必然有抖动。没有熔断,你的程序就是纸糊的;有了它,即使DeepSeek服务器宕机5分钟,你的用户也只会看到“稍后再试”,而不是崩溃。从那以后,我每次写调用代码,都强制用这个函数包装,再没因为API故障被老板半夜打电话。
希望帮到你。
本文还有配套的精品资源,点击获取