云鹊BLOG云鹊BLOG云鹊BLOG
  • 首页

云鹊BLOG云鹊BLOG云鹊BLOG

当前位置:首页关于 Python 的文章
Python 运行时 Protocol:isinstance 已经通过,为什么方法参数和返回类型仍然不对

Python 运行时 Protocol:isinstance 已经通过,为什么方法参数和返回类型仍然不对

给插件入口写一个ByteReader协议,再用isinstance筛选对象,看起来像是已经验证了read(count)接口。实际却可能在调用时才发现少了一个参数,或者拿到整数而不是字节。runtime_checkab...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python mmap 写时复制:视图已经改成新值,为什么 flush 后文件仍然没变

Python mmap 写时复制:视图已经改成新值,为什么 flush 后文件仍然没变

做二进制格式试改时,内存映射允许像修改字节数组一样修改文件内容。但映射里看见新值,不等于源文件也被保存了。决定写回行为的是创建映射时的访问模式,flush不能把一份写时复制映射临时切换成可写文件。下面的完整实验适用于...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python -O 会移除 assert:本地能拦住的非法输入,为什么换个启动选项就通过了

Python -O 会移除 assert:本地能拦住的非法输入,为什么换个启动选项就通过了

把 assert quantity > 0 放在入口,看起来可以拒绝负数;但用 python -O 启动时,这项断言会被移除,原本非法的值可能继续进入后面的计算。需要始终成立的外部输入检查,应该显式判断并抛出约定的异...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python 模块 __all__:星号导入只带走一个名字,为什么其他属性仍然能直接访问

Python 模块 __all__:星号导入只带走一个名字,为什么其他属性仍然能直接访问

给模块写 __all__ = ['public_name'] 后,from 模块 import * 确实只带来清单中的名字。但普通模块对象仍然保有其他属性,显式点名导入也可以成功。__all__ 定义的是星号导入选择...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python mock autospec:替身调用一直成功,为什么真实函数却说参数传错了

Python mock autospec:替身调用一直成功,为什么真实函数却说参数传错了

测试把一个函数换成普通 Mock 后,调用方漏掉参数也能得到假返回值,测试于是通过;换回真实函数却立刻 TypeError。这时问题可能是替身过于宽松,没有保住真实接口的调用方式。create_autospec 可以...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python 字典动态视图:keys 已经保存下来,为什么新增的键仍然出现在里面

Python 字典动态视图:keys 已经保存下来,为什么新增的键仍然出现在里面

把 keys = settings.keys() 存进变量,并没有把当前键清单拍成照片。后来给 settings 新增一项,再查看 keys,也会看见新项。items 视图同样跟着原字典走,所以“我已经保存结果了”要...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python namedtuple 默认值:只给两个备用值,为什么它们落在最后两个字段

Python namedtuple 默认值:只给两个备用值,为什么它们落在最后两个字段

用 namedtuple 表示一条任务记录时,defaults=(1, 'queued') 不会依次填到第一个、第二个字段。默认值对应的是最右侧的字段,前面的字段仍需传入。字段顺序一改,默认值的归属也可能跟着变,所以...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python ABC 虚拟子类:isinstance 已经为真,为什么抽象类的方法仍然不存在

Python ABC 虚拟子类:isinstance 已经为真,为什么抽象类的方法仍然不存在

为旧组件接入一个新接口时,ABC.register 看起来很方便:登记以后 isinstance 就通过了。然而,调用抽象基类里的便捷方法仍会抛出 AttributeError;甚至完全没有实现必需方法的类,也可以被...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python for 的 else 出口:循环一次也没执行,为什么仍然进入了 else

Python for 的 else 出口:循环一次也没执行,为什么仍然进入了 else

在候选列表里找第一项可用配置,常见写法是循环内命中就 break,循环后的 else 处理未找到。但把候选列表换成空列表,else 仍会运行;某一项处理抛出异常时,它又不会运行。循环的 else 表达的是一种结束路径...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Python 生成器 send 双向传值:还没走到第一个 yield,为什么不能先送入数字

Python 生成器 send 双向传值:还没走到第一个 yield,为什么不能先送入数字

生成器不只能把数据交给调用者。写成 amount = yield total 后,暂停点还可以接收调用者送回来的值。但刚创建对象就执行 send(3),会遇到 TypeError;而已经启动以后,send(3) 返回...

yunqueblogyunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
  • 首页
  • 上一页
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 下一页
  • 末页
  • 共 23 页
点击查看更多
Copyright2020后台修改文字. 基于Z-BlogPHP搭建