python教程技术文章
-
文章 · python教程 | 2星期前 | 并发 · 标准库 · 任务调度 · python · 序列化 concurrent.futures Python解释器池 InterpreterPool 异常边界
Python 3.14 的解释器池让多个解释器在同一进程内并行运行,但解释器之间不共享可变对象。本文用一个可核对的小实验说明 submit、pickle 序列化、initializer 和异常传播的边界,并给出何时选线程池、解释器池或进程池的判断方法。384 收藏 -
Python 3.12 为 pathlib.PurePath.relative_to 增加 walk_up 参数,可以生成带 .. 的相对路径,但它不会访问文件系统,也不能单独证明目标路径位于目录内。本文用 Path.resolve、relative_to 和 os.path.commonpath 拆开路径边界与符号链接风险。382 收藏 -
用 Python 线程池提交任务后,add_done_callback 适合做结果归档和状态收口,但不能替代 future.result() 的异常读取。本文拆开回调线程、取消状态、异常处理和 shutdown 时机,给出一套可复查的收尾写法。382 收藏 -
在 Tkinter 里,如果用循环批量创建 Frame,又在闭包里直接引用循环变量,结果往往会“跑偏”——所有事件绑定最后都会落到同一个 widget,也就是循环结束后的那个对象。更稳妥的处理方式,是通过事件对象里的 e.widget 在触发时动态拿到当前具体的控件,同时配合 bind(),而不是381 收藏 -
本文详解 Python 中静态方法被装饰器包装后,通过 self.method() 调用导致意外传入 self 的根本原因,并提供兼容 descriptor 协议的安全包装方案。 本文详解 Python 中静态方法被装饰器包装后,通过 `self.method()` 调用导致意外传入 `self`380 收藏 -
文章 · python教程 | 3星期前 | 并发 · 异常处理 · Python教程 · asyncio · Python asyncio CancelledError 结构化并发 TaskGroup gather ExceptionGroup
把 asyncio.gather 迁移到 TaskGroup,关键不是替换一个 API,而是重新确认失败传播、兄弟任务取消和 CancelledError 清理边界。本文用一个并发抓取示例说明最小迁移写法、ExceptionGroup 处理方式、兼容版本和回归检查。379 收藏 -
Python 的 cache 与 lru_cache 不是同一种容量策略:前者等价于无限缓存,后者可用 maxsize 限制容量。本文用配置示例和 cache_info 排查命中率、键参数与失效边界。377 收藏 -
functools.cache 不会替你判断隐藏状态是否变化。递归函数要把完整输入放进缓存键,并用 cache_info 与 cache_clear 验证结果。377 收藏 -
Python 3.11 起可以用标准库 tomllib 读取 TOML,但读取成功不等于配置可用。本文从缺失键和类型不符两个现场入手,给出默认值、类型校验与错误定位的可复用写法。374 收藏 -
Python 生成器被提前停止时,close() 会通过 GeneratorExit 触发 finally,但未开始执行、被吞异常或引用仍存活等情况会改变清理结果。本文用可复现代码拆开这些边界。373 收藏 -
文章 · python教程 | 2天前 | 超时控制 · Python教程 · Python sqlite3 set_progress_handler Python SQLite 查询超时 SQLite 中止长查询 Python 数据库执行预算
用 Python sqlite3 的 set_progress_handler 按执行预算中止长查询,区分锁等待超时与查询执行超时,并说明回调清理和异常判断。372 收藏 -
csv.DictReader 遇到重复表头时,普通字典会让后一个值覆盖前一个值。本文演示如何保留同名列的全部值,或预处理成唯一字段名后继续使用字典读取。371 收藏 -
AsyncExitStack 适合管理数量不固定的异步资源。本文用连接、会话和异步回调说明注册方式、逆序清理、中途失败与 aclose 的边界。369 收藏 -
Python 日志配置不只是把日志打印出来。本文对比 basicConfig、dictConfig 和分层输出,给出从本地脚本到多模块服务的选择边界、配置示例与验收方法。368 收藏 -
Python 的 sqlite3.Connection.blobopen 可以像文件一样分块读写已有 BLOB,但它不能改变长度,写入前要用 zeroblob 预留空间,并把 Blob 生命周期、事务提交和异常回滚分开处理。366 收藏