with 语句与异常处理基础
掌握 with 自动关闭和 try-except 异常处理
- 理解 with 语句自动关闭资源
- 用 try-except 捕获异常
- 处理常见错误
with 语句
with 会在代码块结束后自动关闭文件,哪怕中间抛了异常也一样关。
try-except 捕获异常
程序出错时别直接崩,把错误兜住处理好:
常见异常类型
try-except 让程序在遇到错误时不崩溃,给出友好提示并继续运行。处理文件、网络、用户输入时特别重要。
异常处理有三条一定要守住的原则:永远不要写裸 except:(会吞掉所有错误包括 KeyboardInterrupt),要捕获具体的异常类型;不要用异常处理来控制正常流程(EAFP 除外:Easier to Ask Forgiveness than Permission 是 Python 的哲学,但要适度);with 语句不仅用于文件——任何实现了 __enter__/__exit__ 的对象都叫「上下文管理器」,线程锁、数据库连接、临时目录都可以用 with。这是 Python 设计得很妙的一个地方。
try:
print(10 / 0)
except ZeroDivisionError:
print("出错了")
print("继续")打开不存在的文件会引发什么异常?
with 语句的主要作用是?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
Python 里整数、字符串甚至函数都是对象,堆在内存里;变量不是装东西的盒子,而是一张贴在对象上的「名字标签」(引用)。id(x) 看对象身份,is 比身份、== 比值。CPython 会缓存 -5~256 的小整数,所以 a=1;b=1 时 a is b 为 True,但 a=300;b=300 未必。结论:判断值是否相等永远用 ==,判断是不是 None 才用 is。
挑战任务
安全读取
尝试读取不存在的文件,用 try-except 捕获并输出友好提示。
课后作业
安全除法器
输入两个数做除法,捕获除零错误和值错误。