#Python
共 135 篇文章
Python 直接执行包内文件,相对导入报 no known parent package
用完整模块名启动包内入口,区分没有父包与超出顶层包;核对工作目录和解释器,保留兄弟子包的正确导入关系。
Python 在 finally 中 return,未处理的异常没有传给调用方
Python finally 中的 return 会丢弃待传播异常并覆盖原返回值。把返回放回成功路径,清理留在 finally,明确默认值对应的异常,并核对 CPython 3.14 的编译警告边界。
Python 读取 JSONL 报 Unexpected UTF-8 BOM
JSONL 第一行报 Unexpected UTF-8 BOM,给文本行加 decode 又报属性错误。确认文件头后用 utf-8-sig 打开,区分逐行 JSON 与整份文档,并保留字符和记录数量。
venv 中 pip 正常,setup.py 子进程却报 No module named pip:检查构建隔离
venv 中 pip 可用,setup.py 内调用子进程却找不到 pip,核对构建隔离,将运行依赖与构建依赖分别声明,避免嵌套安装。
Python 输入 False 后转成 bool 仍为 True,两个输入相加得到 2
input 返回字符串,bool 不会解释其中的 true 或 false。按允许值显式解析,拒绝拼写错误和空输入,再按业务需要计算计数或布尔逻辑。
Python zip 输入长度不一致时静默丢掉尾部数据
zip 默认在最短输入耗尽时停止。Python 3.10 起可用 strict=True 检出长度差,但检查随消费发生,已处理的前缀和输入迭代器副作用不会自动回退。
Python Requests 收到 204 后调用 json 报 JSONDecodeError
按接口契约区分 204 无正文和异常空响应,不把 JSON 解码错误吞成空对象,也不因解析失败重复发送写请求。
Python 离开 except 后读取异常变量报 NameError
Python 3 会在 except 结束时清除 as 后面的目标名字,同名初值也不会恢复。将临时别名与业务变量分开,按需保存错误文本或异常引用,并覆盖无异常路径。
pandas 链式赋值未生效:用一次 loc 修改父表,区分 Copy-on-Write
pandas 链式赋值未更新原表,按目标选择父表单次 loc 或独立子表 copy,区分 pandas 2.x 的 SettingWithCopyWarning 与 3.0 Copy-on-Write 行为。
Python sqlite3 executemany 执行 SELECT 报 ProgrammingError
区分批量 DML 与查询结果收集,改用逐项 execute 或绑定参数的 IN 查询,并核对重复项、顺序和空输入。
psycopg2 导入 pandas 报 can’t adapt type numpy.int64:在参数边界转换标量
psycopg2 从 pandas 导入时无法适配 numpy.int64,应检查最终参数并按已验证的整数字段转换为 Python int。保留参数绑定,区分缺失值、整数范围、精度和批次事务。
Python mock.patch 没有生效:替换被测模块实际查找的名称
mock.patch 已创建但仍调用真实函数时,沿调用表达式定位名称绑定。区分模块顶部 from import、模块属性读取与函数内导入,核对补丁时间和实际调用。
Python dataclass 继承后报 non-default argument follows default argument
dataclass 继承后的默认字段与必填字段顺序冲突,会在类定义阶段报错。用 Python 3.10 起支持的 keyword-only 字段处理,并检查构造签名、位置参数与模式匹配兼容性。
pytest 异步 fixture 变成 async_generator:检查 strict 模式和装饰器
async fixture 返回生成器或协程对象时,检查 pytest-asyncio strict 模式与装饰器。区分旧版本症状、新版警告或错误,明确 auto 模式的接管范围及循环生命周期。
pytest 两个目录都有 test_api.py,收集报 import file mismatch
两个测试目录中的同名文件一起收集报 import file mismatch,可选择唯一名称、完整包布局或 pytest 6.0 起的 importlib 模式,并检查辅助导入和实际收集范围。
Python 函数里递增外部计数器报 UnboundLocalError
函数里递增外部计数器触发 UnboundLocalError,需区分局部变量、模块状态和闭包状态。按状态归属选择返回值、global 或 nonlocal,并核对条件分支和调用方。
Python 生成器结束时报 RuntimeError: generator raised StopIteration
Python 3.7 起,生成器内部漏出的 StopIteration 会转换成 RuntimeError。用 return 正常结束,并在生成器内处理预期的 next 耗尽,保留普通迭代器协议和真实业务错误。
Python isdigit 返回 True,int 转换上标数字却报 ValueError
isdigit 判断 Unicode 数字属性,不能保证文本能解析为整数。按业务语法处理 int 异常或限制 ASCII 字符,并保留输入长度约束。


