Book on Probability and Statistics for Data Science with videos / code22 days agohttps://www.ps4ds.net/
Performance Optimized Statically Typed Python19 days agohttps://post-py.org/POST Python 是一个经过性能优化的、静态类型的 Python 子集,可以进行编译。它在 CPython 下无需修改即可运行,并且可以编译为本地代码而不需要 Python 运行时。函数可以被解释为 Python,编译为本地 C 内核,或转换为 numpy.ufuncs。它强调基于规范性规范而非非正式子集,并提供工具的一致性配置文件。参考编译器会明确拒绝不受支持的语义,避免行为发生静默变化。PostSciPy 正在将 SciPy 重建为 POST Python 库,以发现语言缺陷并推动开发。当前状态包括结构检查、标量内核、向量化、跨模块链接以及 CPython 扩展。规范为草案 v0.2,接口可能会发生变化。
Protobuf-py: Protobuf for Python, without compromises19 days agohttps://buf.build/blog/protobuf-py推出protobuf-py,这是一个全新的、以Python为核心的Protocol Buffers库,它完整通过了proto2、proto3和editions版本的全面一致性测试套件。旨在提供完整的规范支持与符合Python风格的API设计,区别于谷歌的包(受C++/Java影响)或betterproto(功能不完整)。将消息数据存储在采用__slots__的Python对象中,并利用Rust加速器提升性能;在实际使用场景(如解析和读取字段)中比upb更快。生成具有相对导入的可读、类型化的Python代码,从而支持更好的工具集成(例如pyright、mypy),且无需担心全局类型冲突。由Buf构建,与其生态系统(Buf CLI、ConnectRPC)保持一致,已准备好与buf.gen.yaml配合使用,可选Rust加速且无需运行时依赖。
Gleam for Python Programmers13 days agohttps://third-bit.com/gl4py/Gleam是一种专为Python程序员设计的编程语言,旨在帮助他们学习函数式编程概念。课程内容包括从基础的类型与函数到高级主题(如状态机和基于属性的测试)的系列课程。其中包含多个基于项目的课程,例如构建键值存储、虚拟机以及Web API。附录部分强调务实的学习方法:从现有水平出发,利用可用资源,并在可能时帮助他人。
What `for x in y` hides from you – From Scratch Code11 days agohttps://fromscratchcode.com/blog/what-for-x-in-y-hides-from-you/Python 的 'for x in y' 循环实际上是通过迭代器协议实现的:它首先调用 iter(...) 获取一个迭代器,然后重复调用 next(...) 来获取值,并在引发 StopIteration 时停止。for 循环语法是一个包装器,隐藏了底层机制,该机制对于所有可迭代对象(如列表、字符串、范围对象和生成器)都是一样的,从而使迭代感觉统一且灵活。理解这一点表明迭代并不是直接作用于集合本身,而是作用于迭代器,迭代器可以被耗尽(例如,在例子中,第一个循环用尽迭代器后,第二个循环将无法打印任何内容)。这种设计允许自定义对象通过实现 __iter__() 和 __next__() 方法来参与迭代,并解释了为什么循环中的解包(例如 'for x, y in pairs')不需要特殊逻辑即可工作。
Show HN: Agent in 9 Lines Python4 days agohttps://gist.github.com/tosh/6e91a9dbf08dd630c535e7345ac7f0b5该脚本是一个仅用9行Python代码实现的最小化AI代理。它使用一个自定义工具,通过子进程根据模型请求执行shell命令。该代理通过命令行输入与用户交互,将对话历史发送给GPT-5.6模型API,并显示响应以及令牌使用情况。
Splink – Fast, accurate and scalable probabilistic data linkage3 days agohttps://moj-analytical-services.github.io/splink/index.html
Fixing a bug with byte order marks3 days agohttps://alexwlchan.net/2026/byte-order-marks/作者正在将SRT字幕文件转换为WebVTT格式,以便在静态网站上用于HTML5视频。出现了一个错误,因为UTF-8 SRT文件中的字节顺序标记(BOM)阻止了序列号的正确移除,导致输出中保留了BOM和第一个数字。修复方法是在Python中使用encoding='utf-8-sig'打开文件,以自动去除BOM。为了修复已转换的文件,作者使用ripgrep查找BOM,并使用Python脚本从所有.vtt文件中移除它们。这次经历强调了在管理媒体文件时理解底层文本编码细节的重要性。
Overloaded Overloading4 days agohttps://powerfulpython.com/blog/overloaded-overloading/Python不支持方法重载(多个同名但签名不同的方法)。只有最后一个方法定义会被保留。Python确实支持运算符重载,通过使用如__add__这样的魔术方法,使得像'+'这样的运算符可以为不同类型以不同方式工作。'+'运算符既用于加法(数字)也用于拼接(字符串),因为float和str类定义了自己的__add__方法。为了模拟方法重载,你可以编写一个调度方法,通过isinstance()检查参数类型或参数的存在性。或者,Python的functools.singledispatch装饰器可用于基于第一个参数类型的简单调度情况。术语'重载'在Python中有两种不同的含义:方法重载(不支持)和运算符重载(支持)。
Ruff v0.16.0 – Significant new updates – 413 default rules up from 597 hours agohttps://astral.sh/blog/ruff-v0.16.0