面试题答案
一键面试- 自动资源管理:
- 使用
with
语句,在代码块结束时,会自动关闭数据库连接。例如,传统方式打开数据库连接后,如果忘记调用close()
方法关闭连接,可能会导致连接泄漏,占用系统资源。而with
语句能确保即使代码块内发生异常,连接也会被正确关闭。
import sqlite3 with sqlite3.connect('example.db') as conn: cursor = conn.cursor() cursor.execute('SELECT * FROM some_table') # 代码块结束时,conn会自动关闭
- 使用
- 代码简洁:
with
语句将资源的获取和释放紧密关联在一个代码块内,使代码结构更清晰。传统方式需要在不同地方分别写打开和关闭连接的代码,可能导致代码分散,不易阅读和维护。例如:
对比使用# 传统方式 conn = sqlite3.connect('example.db') try: cursor = conn.cursor() cursor.execute('SELECT * FROM some_table') finally: conn.close()
with
语句的代码,with
语句版本更简洁明了。 - 异常处理友好:
- 在
with
语句的代码块内发生异常时,with
语句会自动处理资源的清理(关闭连接)。传统方式中,需要在try - except - finally
结构的finally
块中手动关闭连接来确保异常时资源正确释放。如果在try
块中发生异常,with
语句能保证数据库连接被安全关闭,避免因异常导致连接未关闭的问题。
- 在