用AI写Python:10个高效提示词模板实战指南
用AI写Python这件事门槛真不在AI而在提示词。我见过太多人打开对话框第一句就是“帮我写个爬虫”AI也确实能给你一堆代码但跑起来不是缺这个库就是漏了异常处理改来改去比手写还慢。反过来把需求讲清楚、约束给到位、验收标准列明白AI产出的代码基本就是“能直接进PR”的水平。这篇文章就把我在实际开发里反复验证过的10个提示词模板整理出来每个都有适用场景、模板原文和注意事项你可以直接复制改着用也可以当成写提示词的方法论来参考。你会看到我给的模板没有一个是玄学核心就一件事把AI当成一个经验尚可但需要你把需求讲清楚的结对工程师。它写得好不好很大程度上取决于你给的信息全不全。搞懂这一点你就掌握了用AI写Python的正确姿势。1. 为什么同样用AI写Python别人比你顺手很多人以为AI写代码靠的是“智能”其实它靠的是“预测”。你在对话框里输入的每一个字都会影响它预测下一个词的概率。提示词写得模糊它就只能给出“最可能的模糊答案”提示词写清楚了它才能给出“最可能的精准答案”。这个过程和你招一个初级开发没什么两样——需求文档越烂交付物越离谱。1.1 AI写代码的本质你在帮它缩小猜测空间大模型本质上是根据上下文做概率生成的。你只丢给它一句“写个解析Excel的脚本”它就要自己猜是读xlsx还是xls是pandas还是openpyxl表头长什么样异常怎么处理猜得越多出错概率越大。而当你把函数签名、输入输出样例、边界条件都写清楚之后它需要猜的东西就只剩下了具体实现细节准确率会明显上升。所以我一直强调一句话你给提示词的信息密度直接决定AI输出代码的质量上限。这不是经验之谈是模型原理决定的。你自己写代码时尚且要画边界、理逻辑、定接口何况是对一个“读过很多代码但从没运行过你项目”的模型。1.2 有效提示词的五个要素根据我这些年的使用经验一个能稳定产出高质量Python代码的提示词通常包含以下五个要素要素说明举例角色设定让AI进入对应专业语境“你是一名Python开发专家”任务描述明确要做什么越具体越好“实现一个将价格文本转浮点数的函数”约束条件环境、版本、风格、逻辑边界“Python 3.11不能使用第三方库”输入输出示例给出样例对锁定行为“输入1,299.00输出1299.0”验收标准让AI知道什么叫“完成”“为关键逻辑添加注释包含异常处理”后面给你的10个模板全部是这五要素的组合。你可能觉得逐条填这些字段麻烦但习惯之后写一个高质量提示词的时间不会超过30秒而它能帮你省下的调试时间往往是以小时计的。2. 五个代码生成与解释类模板直接抄这一批模板解决的是最常见的写代码场景让AI从零实现、读懂别人的代码、补测试、重构、以及排错。都是我在日常开发中反复使用过、确认效果稳定的版本。2.1 模板一函数实现模板这个模板适用于你明确知道自己要什么函数只是不想手敲重复逻辑的情况。你是Python专家。请实现一个函数函数签名如下 def clean_price(text: str) - float: 功能把¥1,299.00、1 299,00这类价格文本转为浮点数。 要求 1. 处理千分位逗号、空格、货币符号、中文单位万/亿 2. 无法解析时返回0.0 3. 为关键步骤写注释 4. 只输出完整代码不输出多余解释这个模板的巧妙之处在于函数签名定义了接口功能描述定义了行为示例定义了数据形态异常规则定义了边界注释要求定义了代码风格。AI在这套信息下产出的代码大概率是能直接跑通的。实测下来这种“带签名样例边界”的写法比“帮我写个函数处理价格字符串”靠谱一个量级。我强烈建议你在所有代码生成请求里都至少包含函数签名和一组输入输出样例哪怕只是写给自己看。2.2 模板二代码解释模板这个模板适合你接手遗留代码或者调一个半生不熟的库函数时使用。请以资深工程师的视角解释这段Python代码。 要求 1. 先用一句话概括整体功能 2. 按执行顺序逐段解释关键逻辑 3. 指出2-3个潜在风险或改进点 4. 涉及语言特性和库函数时同步说明其设计意图 代码 import functools import time def retry(max_attempts3, delay1): def decorator(func): functools.wraps(func) def wrapper(*args, **kwargs): for attempt in range(max_attempts): try: return func(*args, **kwargs) except Exception as e: last_exc e time.sleep(delay) raise last_exc return wrapper return decorator注意我故意在代码里留下了一个潜在问题重试成功时last_exc可能未定义虽然实际执行时不会走到raise。很多人让AI解释代码时只说“解释一下”AI就会泛泛而谈。而我加了“指出潜在风险和改进点”这个要求后AI就会主动做代码审查给出的回答会超出你的预期。这也是一个技巧解释类提示词里加入“以什么身份”“站在什么角度”“需要输出哪些维度”AI的回答质量会完全不同。2.3 模板三测试用例生成模板写完函数顺手让AI补测试这一招能省很多事。前提是模板要能把测试的覆盖面锁死。请为下面的函数生成pytest测试文件。 函数代码 def parse_date(text: str): from datetime import datetime for fmt in (%Y-%m-%d, %Y/%m/%d, %Y.%m.%d): try: return datetime.strptime(text, fmt) except ValueError: continue raise ValueError(f无法解析日期: {text}) 要求 1. 覆盖正常输入、边界值、异常输入三类场景 2. 至少包含8个测试用例 3. 使用pytest的参数化测试 4. 为每组断言注明预期理由 5. 不修改原函数逻辑这个模板我最喜欢的地方是“注明预期理由”这一条。很多AI生成的测试用例看似覆盖了各种情况但断言逻辑是错的——它自己就没搞清楚函数行为。要求它解释每个断言的“预期理由”等于逼着它先理解函数再写测试。你拿回来review时也能快速判断它理解得对不对。另外要求参数化测试是因为AI默认会生成一堆重复的test_xxx函数参数化之后代码更紧凑也更符合工程习惯。2.4 模板四代码重构模板重构是一件高风险低容错的事AI尤其容易“自作聪明”地改变行为。所以必须明确告诉它行为不能变。我要重构以下Python代码。目标提升可读性和可维护性不改变对外行为。 代码 def f(a, b): c [] for i in range(len(a)): d a[i] * b if d 100: d d / 2 c.append(d) return sum(c) 要求 1. 先输出重构要点清单指出原代码有哪些问题 2. 再输出重构后的完整代码 3. 用行号说明每个重构点的理由 4. 最后指出你刻意保持不变的部分避免行为变更注意第4条这是我踩过坑之后加上的。AI重构时特别喜欢顺手“优化逻辑”比如把遍历改成列表推导、把条件合并结果重构完功能对不上。要求它主动说明“哪里保持不变”它就会在重构时更谨慎你review时也能逐一核对。实测这个模板对“拆长函数”“提取重复逻辑”“改名提升可读性”这类重构任务特别好用。但对“改算法换实现思路”这种更深层的重构AI往往只做表面优化你还是得自己主导方向。2.5 模板五错误排查模板报错信息你当然可以自己去搜但让AI分析完整堆栈往往更快尤其是某些冷门库的报错。我的Python代码运行时报错请帮我定位问题。 错误堆栈 Traceback (most recent call last): File main.py, line 15, in module result process(users) File main.py, line 9, in process return [u[name] for u in users if u[age] 18] KeyError: name 相关代码 users [ {name: Alice, age: 20}, {age: 17}, {name: Bob, age: 25}, ] result process(users) 要求 1. 先复述你理解的代码意图避免误判 2. 定位根因不要只给表面修复 3. 给出最小修复补丁并说明为什么改这里 4. 如果是环境或数据问题请说明需要我补充的信息第1条“先复述代码意图”很关键它能防止你拿到的答案是AI没读懂代码就硬写的。你先看它复述得对不对就知道它是否真的理解了代码。如果复述错了你直接纠正它后续的修复建议才有参考价值。这个模板对付KeyError、TypeError、IndexError这类常见异常非常高效。遇到环境相关问题时它也经常能通过错误堆栈猜测你缺了某个系统依赖然后再引导你补充系统信息。3. 五个调试优化与工具类模板效率翻倍这一批模板的核心是让AI帮你干那些“写起来繁琐、但又不怎么需要创造力”的活性能分析、正则表达式、数据清洗、设计选型、写文档。这几类任务恰恰是AI的强项只要模板给得准输出质量会非常稳定。3.1 模板六性能优化模板性能优化最怕AI乱贴装饰器、乱推三方库。你需要在提示词里把它按在板凳上先分析后动手。这段Python代码运行效率低请帮我做性能优化。 代码 def find_common(users, targets): result [] for u in users: for t in targets: if u[id] t[id]: result.append(u) break return result 运行环境Python 3.11数据量users约10万条targets约1万条 约束不能改变函数对外接口 要求 1. 先指出最可能的性能瓶颈并说明判断依据 2. 给出使用cProfile或timeit做基准测试的建议 3. 给出优化后代码说明时间复杂度和空间复杂度的变化 4. 如需第三方库列出库名和安装命令双层循环里做线性查找复杂度O(n*m)数据量一大必炸。AI看到这代码基本都会给出哈希索引优化的方案。但问题是如果你不禁止它改变接口它有时候会直接把函数签名都改了让你调用方全部跟着改。加上“不能改变对外接口”的约束它才会在原有形态下做最小改动优化。我实际测试时让AI把10万条查找从双层循环改成set或dict索引后速度快了上百倍。这个模板对任何O(n²)O(n²)级别的代码都有效强烈建议复用。3.2 模板七正则表达式生成模板正则表达式是那种“自己写半小时AI一秒生成”的典型场景但AI生成的正则偶尔也有防御盲区需要你主动让它自查。我需要写一个Python正则表达式用来从日志文本中提取IP和端口。 样本1 2025-01-10 12:33:41 ERROR connection to 192.168.1.10:8080 failed 期望结果192.168.1.10, 8080 样本2 server 10.0.0.2:443 response timeout 期望结果10.0.0.2, 443 要求 1. 生成可直接在Python中使用的pattern注意原始字符串写法 2. 解释匹配逻辑 3. 列出该正则可能漏掉或误匹配的边界情况 4. 推荐使用re.search还是re.findall并给出调用示例给定明确样本后AI生成的正则准确率高很多。尤其是“边界情况”这条它会主动告诉你“如果IPv6或者压缩格式就不匹配”这就是你后续决定要不要补逻辑的依据。调用示例加上去后你甚至不用自己查re模块的API。顺便说一句如果你要匹配的是URL、日期、邮箱这些常见格式可以让AI直接推荐标准库urllib.parse或第三方库里的现成方案正则不是万能解有时候解析库更稳。3.3 模板八数据清洗脚本模板数据清洗往往是脏活累活但每一条清洗规则都可以表述清楚。这正是AI最擅长的结构化任务。我现在有一份CSV数据需要清洗。字段和已知问题如下 字段user_id, register_date, score, nickname 问题 - score存在未知、空值、负数 - register_date有2024/1/5和2024-01-05两种格式 - nickname存在前后空格和emoji 要求 1. 用Python写一个处理脚本分步骤处理以上问题 2. 每一步输出处理前后的记录数或示例 3. 对无法修复的数据给出“保留还是删除”的建议并写清判断逻辑 4. 使用pandas或纯Python皆可但需说明选型理由关键点在于“分步骤处理”和“输出处理前后的记录数”。不加这两条AI会写一个大杂烩脚本中途发生了什么你完全看不懂。加上之后它会拆成一个个独立步骤甚至主动打印统计信息方便你核对数据是否被正确清洗。我个人的习惯是让AI对“无法修复的数据”先做标记而不是直接删除因为真实数据里的每一个异常记录都可能隐藏着业务逻辑问题直接删有风险。你可以在模板里追加一句“无法修复的数据保存到clean_errors.csv”比让AI自由发挥稳妥很多。3.4 模板九设计模式与架构建议模板当你不确定该用类还是函数、该不该加缓存、接口怎么抽象时这个模板能帮你快速产出一个靠谱的方案。我需要用Python实现一个“带缓存的数据获取模块”。背景 - 上游接口get_data_from_api(id)偶尔超时 - 多个模块会同时请求同一id的数据 - 缓存有效期5分钟超时后返回最后一次成功缓存 - 模块需要方便单元测试不依赖具体网络库 请给出 1. 两个可行方案如装饰器缓存、包装类对比优缺点 2. 推荐方案的类/函数结构伪代码即可 3. 需要处理的边界情况缓存击穿、线程安全、时钟回调等这个模板最大的价值是强迫AI给出多个方案和取舍。很多人让AI设计时只给一个方案它通常会拿“最主流”但不一定“最合适”的方案糊弄你。要求它对比两个方案之后你就能看到不同维度上的权衡比如实现复杂度、测试友好度、扩展性。最终的伪代码结构也能让你快速评估工作量。针对“缓存5分钟、超时返回最后一次成功缓存”这个需求如果是我自己设计大概率会用一个带锁的字典加时间戳。AI通常也绕不开这个思路但它补充的边缘情况会很有用比如“缓存击穿时要不要加锁”“多个线程同时刷新会不会重复请求”。这些点你在自己设计时很容易漏。3.5 模板十文档与注释生成模板写代码一时爽写文档火葬场。让AI补文档不仅能省时间还能顺便检查它对你代码的理解是否到位。请为以下Python模块生成项目文档需要的docstring和注释。 代码 class TemperatureConverter: staticmethod def celsius_to_fahrenheit(c): return c * 9 / 5 32 staticmethod def fahrenheit_to_celsius(f): return (f - 32) * 5 / 9 要求 1. 模块开头docstring说明用途、主要类、使用示例 2. 函数docstring包含参数说明、返回值、可能抛出的异常采用Google风格 3. 对复杂逻辑添加行内注释不需要逐行注释 4. 额外生成一段README片段安装方式、快速开始、一个完整示例我特别强调Google风格因为AI默认会生成一堆不标准的docstring格式混进项目后反而难看。你可以在模板里写清楚你团队采用的风格让AI对齐。这让生成结果能直接进代码库不用二次修格式。还有一个细节让AI“额外生成README片段”它就会把同类代码换成用户视角给出安装和使用示例。这个附加产出对开源项目或交接文档非常有用。4. 从模板到工作流实战中的组合用法与注意事项单个模板再厉害也只是锤子。真正提升效率的是把提示词模板嵌入你的日常开发流程。这一章我讲讲更实战的东西怎么组合、怎么管理上下文、以及最容易踩的坑。4.1 模板组合把AI写进你的开发流程我在真实项目中从来不会只用一个模板。比如我准备写一个批量处理文件的工具通常会连续使用三个模板先用模板一生成核心批处理函数再用模板三生成测试用例跑通之后再让模板十补齐文档。每一步的产物都是下一步的输入整个流程走完代码、测试、文档都有了。还有个更实用的组合思路先把一个功能需求拆成多个小任务每个小任务用一次独立的模板调用而不是让AI一次性生成一个大文件。这样做的原因有两个。第一AI在长上下文中更容易“忘记”开头的要求任务拆小之后关注点更集中第二你可以在每个步骤之间加入人工review比如先审查核心函数的实现再决定要不要继续生成测试和文档。这种人工把关放在最后统一做出了问题排查成本会高很多。4.2 上下文管理与模型差异不同AI模型的上下文窗口长度差异很大但你最好不要把上下文撑到极限。当你要让AI修改一个已有文件时我的做法是只在提示词里粘贴相关函数或相关代码块而不是贴上整个文件。文件太长的话AI容易产生“注意力漂移”改错了不相关的部分你要花更多时间review。还有一个细节在代码里标注行号。比如“代码第12行的循环太慢”比“中间那个循环太慢”要清晰得多。很多模型对行号非常敏感你给它带行号的代码它能准确定位问题。这个技巧在模板四、模板五、模板六里都适用。4.3 常见误区我观察到很多人用AI写Python效率低往往不是因为AI不行而是踩了下面几个误区。这条名单是我长期观察加亲身踩坑总结出来的需求描述过于抽象。只说“优化一下代码”AI会默认你已经告诉它优化目标结果它可能去优化可读性而你想要的是性能。一次问太多。让AI同时“写代码、加注释、补测试、给文档”它通常会顾此失彼每一部分都浅尝辄止。拆开问每个子任务单独给模板。不提供运行环境。AI默认的Python可能是3.9或3.11如果你的项目是2.7时代遗留或者依赖了旧版本库不说明就会得到一堆跑不起来的代码。不看AI输出的解释部分。很多模板要求AI先输出思考过程这部分恰恰能帮你判断它是否理解正确。只看代码、跳过解释等于放弃了免费的设计评审。5. 常见问题与排查技巧实录这一章我把实际使用中最常碰到的AI写Python问题整理成速查表每一条都是我在真实开发里遇到并验证过解决思路的。问题现象根本原因解决办法AI生成了不存在的标准库函数模型幻觉把训练数据里的近似API拼凑出来在提示词中加“不要编造不存在的函数”并让AI注明调用来源代码基于老版本语法导致报错模型训练数据里包含大量旧代码模板中明确“基于Python 3.11及以上版本”多轮对话后AI越改越偏模型在长上下文中对早期指令权重下降开新会话重新粘贴模板和代码必要时把修改要求一次性列全AI只给解释不给代码提示词逻辑偏讨论模型倾向输出说明在模板里加“只输出完整代码不需要多余解释”测试用例断言错误AI没有真正理解函数行为就写断言用模板三要求“注明预期理由”逐一检查断言逻辑优化后代码行为不一致重构时AI顺手改掉了隐式逻辑模板四里加“说明你刻意保持不变的部分”除了这张表还有三个排查技巧很重要属于那种常规教程不会写、但实战里很有用的经验。第一个技巧让AI告诉你“改动了什么”。每次接受AI的修改建议后我都要求它用一句简短的话描述这次改动为什么合理。这句话能帮你快速判断它是真的理解了问题还是碰巧给了个能跑的方案。第二个技巧怀疑AI给的是幻觉代码时直接问它“这段代码用到了哪些标准库函数和第三方库分别是什么版本”。AI在回答API来源时通常会更谨慎不会像凭空生成时那么大胆。之后你再对着文档确认一下基本能过滤掉大部分幻觉。第三个技巧如果AI持续给你报错的重试代码不要一直在同一段上下文里来回纠缠。直接把问题用新窗口重新提交有时候新上下文的生成结果反而更干净。这就像写代码陷入死胡同后休息一下重新看一遍思路会清晰很多——AI也有类似的问题。6. 一点个人体会用得多了你会发现提示词模板的意义不只是“让AI写出更好的代码”更是逼你自己把需求想清楚。每次填写模板里的“输入输出示例”“边界条件”“约束”其实就是在梳理你对业务的理解。我自己现在维护的脚本库里存了大约30个按项目分组的提示词模板有Python的也有SQL和Shell的。它们不光是给AI用的也是我的需求文档模板。每次新需求进来我照着这些模板填一遍信息脑子里基本就已经有了实现方案AI只是帮我加速敲键盘而已。最后再分享一个小技巧当你拿到一个效果好用的提示词别急着用完就丢。把它按场景存进你的代码片段管理工具里下次遇到相似需求直接复制改参数。用AI写Python的正确姿势不是会提问而是会沉淀——把每一次有效问答变成下一次更轻松的起点。