python教程技术文章
-
Pydantic 部分更新不能用 None 判断字段是否缺失。本文用 model_fields_set 与 model_dump(exclude_unset=True) 保留显式 null、排除未提供字段,并梳理 Pydantic v2 的 model_dump、model_copy 与回归测试。399 收藏 -
用 Python contextvars 在 asyncio 请求链中传递 request_id,说明 Task 上下文继承、copy_context、Token.reset 以及 to_thread 的边界。393 收藏 -
解释 ChainMap 查找层与写入层的差异,演示用 maps 显式更新指定配置、用 new_child 隔离修改,以及何时应该封装深层写入规则。390 收藏 -
dataclasses.replace 会调用数据类的 __init__ 重建对象,而 InitVar 不保存在实例字段中。本文讲清无默认值时如何显式传参、有默认值时的回退行为、init=False 字段重算,以及何时应改用真实字段或自定义复制方法。381 收藏 -
Python 3.15 新增的 sentinel 类型适合表示“参数未提供”这一状态。本文从 None、object() 和类型注解的差异出发,给出默认值设计、身份判断、复制序列化和旧版本兼容的实用写法。381 收藏 -
通过一个异步仓储接口的类型报错,讲清 Protocol 中 async def 的正确写法、Awaitable 双层嵌套、参数形状、泛型协议与运行时检查边界。363 收藏 -
singledispatchmethod 继承后没有命中重载,通常不是继承失效,而是分派参数、注册对象或装饰器顺序与预期不同。本文用一个消息适配器项目拆解定位方法。362 收藏 -
使用 importlib.resources.files() 获取 Traversable 后,可通过 joinpath、iterdir、is_file 和 read_text 读取包内目录。本文同时说明 zip 包兼容、as_file 目录支持与旧 contents API 的迁移边界。359 收藏 -
pytest Fixture 的 scope 决定资源被缓存和复用多久。本文从测试隔离、初始化成本和共享状态风险出发,对比五种作用域,并给出 session 基础设施配合 function 事务的实用方案。341 收藏 -
Python 3.14 的自由线程构建取消了 GIL 的全局串行效果,共享字典、计数器和迭代器不能再靠偶然的执行顺序兜底。本文用一个带锁的共享计数器说明检测运行时、划定临界区、处理扩展兼容和压力验证的完整做法。337 收藏 -
拆开 Python sqlite3.Connection.backup 的 progress 回调,解释 status、remaining、total 的含义,并给出进度计算、批量大小和资源回收的实用写法。325 收藏 -
解释 importlib.resources.as_file 返回路径的生命周期:需要从 zip 等容器提取时,临时文件或目录会在退出上下文后清理;并给出块内使用、ExitStack 延长借用期和复制持久化三种写法。318 收藏 -
当函数既能自己创建资源,也能复用调用方传入的资源时,nullcontext 可以作为无操作上下文管理器,让同步 with 和异步 async with 各自保持单一入口。本文结合文件与 HTTP 会话示例,说明 enter_result、Python 版本、资源所有权和常见报错。316 收藏 -
文章 · python教程 | 2天前 | 面向对象 · python · Python教程 · InitVar __post_init__ Python dataclass 派生字段 field(init=False)
Python dataclass 适合声明原始输入字段,再用 __post_init__ 在生成的 __init__ 完成后计算派生字段。本文从 field(init=False) 开始,说明 InitVar、继承、frozen、更新边界和 replace 的正确用法。303 收藏 -
Python import 很慢时,应先用 -X importtime 区分模块自身耗时与包含子依赖的累计耗时,再排查模块顶层的文件 I/O、网络连接、插件扫描和重对象构造。本文给出轻量 __init__、函数内 import、按需初始化及复测方法,并说明延迟导入只是转移成本。292 收藏