python教程技术文章
-
CPython 3.15 已把 RISC-V 纳入 Tier 3 支持,但解释器能运行不等于第三方扩展已有可用轮子。本文给出 riscv64 扩展构建前的运行时、ABI、工具链、系统依赖与 wheel 标签检查清单。493 收藏 -
Python functools.lru_cache 报 unhashable type list 时,根因是可变参数不能参与缓存键。本文解释哈希边界,并用 tuple、排序后的 tuple、frozenset 和包装函数完成稳定缓存。388 收藏 -
用 Python RotatingFileHandler 按文件大小轮转日志,理解 maxBytes、backupCount、app.log.1 命名链,以及多进程写入时的安全边界。236 收藏 -
subprocess.run 的 timeout 只解决等待问题。本文用 Popen、独立进程组和 communicate,说明 POSIX 与 Windows 如何在超时后终止子进程树并回收输出。495 收藏 -
multiprocessing.Queue 的 close() 不会立刻杀掉 feeder thread,它还要把缓冲数据刷入 pipe。本文解释 close、join_thread 与 cancel_join_thread 的边界,并给出避免进程退出卡住的关闭顺序。125 收藏 -
文章 · python教程 | 1个月前 | JSON · Python教程 · 异常排查 · Python json.loads JSONDecodeError lineno colno pos JSON排错
Python 解析多行 JSON 报错时,JSONDecodeError 的 lineno 和 colno 是从 1 开始的行列坐标,pos 是 doc 中的 0 起始偏移。本文用 splitlines() 还原出错行,说明换行、空白和 Unicode 字符带来的定位边界,并给出可复用的诊断函数。326 收藏 -
csv.DictReader 遇到重复表头时,普通字典会让后一个值覆盖前一个值。本文演示如何保留同名列的全部值,或预处理成唯一字段名后继续使用字典读取。371 收藏 -
Python sqlite3 的 commit() 结束的是连接上的事务,不会自动关闭 Cursor。本文区分提交后的 fetch、重新 execute、写入游标和 autocommit 场景,给出安全的读取与确认方式。181 收藏 -
用一个集合元素检查案例说明 Python typing.TypeGuard 的最小写法、真分支收窄规则、假分支边界,以及它与 TypeIs 和普通 bool 检查函数的区别。348 收藏 -
讲清 Python dataclass 的 frozen=True 为什么仍能保存可变缓存,并用 default_factory、init=False、compare=False 和 hash=False 设计按实例隔离的内部缓存。256 收藏 -
pathlib.glob 的 ** 会递归进入隐藏目录。本文用 Path.parts 过滤任意层级的隐藏目录,再补上文件类型、排序和符号链接边界,给出可复用的 Python 遍历函数。142 收藏 -
Python 日志重复输出通常来自子 logger 与 root logger 同时处理同一条 LogRecord。本文用 logger 拓扑、handler 归属和 LoggerAdapter 上下文三个维度,给出可执行的排查与配置选择方法。471 收藏 -
用一个多模块请求场景说明 Python LoggerAdapter 如何把上下文交给 Handler 和 Formatter,重点处理字段缺失、重复 Handler 与 merge_extra 版本差异。215 收藏 -
Python frozen dataclass 保存派生字段时,应把计算放进 __post_init__,用 object.__setattr__ 完成初始化,并用 default_factory 和稳定字段顺序控制默认值与构造签名。213 收藏 -
Python dataclass 可以用 InitVar 接收只在构造阶段使用的配置或环境参数,再通过 __post_init__ 生成真正字段。本文同时说明 default_factory、frozen=True 和字段顺序的边界。264 收藏