Python 新手入门|攻击式编程 vs 防御式编程:写出健壮代码的核心思维
刚学 Python 的你,是不是经常遇到这些崩溃瞬间?写的函数自己测试完美运行,换个输入直接报错;处理文件时,文件不存在程序直接闪退;给同学用自己写的小工具,对方随便输点内容就崩掉……

其实这不是你能力不行,而是编程思维没跟上!今天咱们用最简单、最接地气的方式,讲清楚 Python 新手必懂的两个概念:攻击式编程和防御式编程。

不用复杂理论,看完就能用,帮你从「代码能跑就行」进阶到「代码稳定好用」!
一、攻击式编程:乐观主义者的写法
什么是攻击式编程?
攻击式编程也叫乐观编程,核心只有一句话:我默认所有条件都是完美的,代码直接冲!不做任何多余的预判!
就像出门不看天气预报,默认不会下雨,不带伞;新手写代码,几乎都是本能的攻击式编程 —— 因为它简单、直接、不用动脑。
新手最常见的攻击式代码示例
咱们用两个入门级例子,一眼看懂:
示例 1:除法函数(攻击式)
# 攻击式除法:默认除数不为0,参数都是数字
def divide(a, b):
return a / b
# 正常调用:完美运行
print(divide(10, 2)) # 输出 5.0
# 意外调用:程序直接崩溃!
print(divide(10, 0)) # 报错:ZeroDivisionError(除数为0)
print(divide(10, "abc")) # 报错:TypeError(类型错误)
示例 2:读取文件(攻击式)
# 攻击式读文件:默认文件一定存在
with open("my_note.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 如果文件删了/输错名字:直接报错FileNotFoundError,程序终止
攻击式编程的优缺点
✅ 优点:
- 代码极简,编写速度飞快
- 逻辑直白,新手一眼就能看懂
- 适合自己快速测试、写临时小脚本
❌ 缺点:毫无容错能力! 只要出现一点意外,程序直接崩溃,完全无法处理异常。
二、防御式编程:悲观主义者的写法
什么是防御式编程?
防御式编程也叫悲观编程,核心是:提前预判所有可能出错的地方,提前做好应对方案!不让程序轻易崩溃!
就像出门看天气预报、带伞、检查钥匙,把所有意外都堵在前面。防御式编程不是写 bug,而是提前消灭 bug,让程序即使出错,也能优雅提示,而不是直接闪退。
改造:防御式代码示例
我们把刚才的攻击式代码,改成稳定不崩溃的防御式版本:
示例 1:除法函数(防御式)
# 防御式除法:预判所有可能的错误
def divide(a, b):
# 1. 预判:参数不是数字的情况
if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
return "❌ 错误:请输入数字!"
# 2. 预判:除数为0的情况
if b == 0:
return "❌ 错误:除数不能为0!"
# 3. 所有风险排除,再执行核心逻辑
return a / b
# 测试所有情况,程序全程不崩溃!
print(divide(10, 2)) # 5.0
print(divide(10, 0)) # ❌ 错误:除数不能为0!
print(divide(10, "abc")) # ❌ 错误:请输入数字!
示例 2:读取文件(防御式)
# 防御式读文件:捕获所有文件操作异常
try:
# 核心逻辑
with open("my_note.txt", "r", encoding="utf-8") as f:
content = f.read()
print("✅ 文件读取成功:", content)
# 捕获:文件不存在的异常
except FileNotFoundError:
print("❌ 错误:文件不存在,请检查文件名/路径!")
# 捕获:其他所有未知异常
except Exception as e:
print(f"❌ 读取失败,原因:{e}")
防御式编程的优缺点
✅ 优点:
- 程序极度稳定,永远不会无故崩溃
- 友好的错误提示,自己 / 别人都能快速定位问题
- 团队开发、正式项目的必备标准
❌ 缺点:代码多几行,需要多思考一步「这里哪里会出错?」
三、新手必看:两者怎么选?
没有绝对的好坏,分场景使用才是高手思维:
✅ 用攻击式编程的场景
- 自己写临时小脚本、快速测试代码
- 学习练习、本地自用的简单工具
- 代码逻辑极简单,几乎没有任何意外风险
✅ 必须用防御式编程的场景
- 给别人使用的代码、函数、小工具
- 正式项目、生产环境代码
- 处理外部数据(文件、用户输入、网络请求)—— 这是最容易出错的地方!
四、Python 新手必学的 5 个防御式技巧
不用学复杂框架,掌握这 5 个基础用法,你的代码直接升级:
1. try-except:捕获异常(最常用)
专门处理文件、运算、网络等可能报错的逻辑。
2. 参数校验:isinstance()
判断用户输入的参数类型是否正确,杜绝类型错误。
3. 函数默认值
给参数加默认值,避免缺失参数报错。
# 带默认值,不传age也不会报错
def introduce(name, age=18):
print(f"我叫{name},今年{age}岁")
4. assert 断言
开发阶段快速检查错误,提前发现问题。
def check_age(age):
# 断言:年龄必须是0-150,否则直接报错提示
assert 0 <= age <= 150, "年龄不合法!"
return age
5. 清晰的提示信息
用中文提示代替生硬的系统报错,方便调试。
五、总结
对于 Python 新手来说:
- 攻击式编程是本能:先学会它,让代码快速跑起来,完成基础功能;
- 防御式编程是能力:养成预判错误的习惯,让代码稳定、健壮、专业。
攻击式编程能让你快速写出代码,防御式编程能让你写出好代码。
从今天开始,写代码前多问自己一句:这里可能会出错吗?坚持下去,你写的 bug 会减少 90%,轻松成为身边人眼中的编程小大佬~
更多推荐



所有评论(0)