Python与Lua中NaN的诡异行为

Two Case Studies of NaN

6theanonymousone💬 3

我发现IEEE-754标准下的NaN在编程语言设计中常常被忽视,导致一些意想不到的行为。在Python中,列表比较的优化假设对象总是等于自身,但NaN打破了这一规则,使得[nan] == [nan]返回True,而nan == nan却是False。在Lua中,数值for循环遇到NaN时表现更加诡异:循环次数、步长判断完全失控,甚至出现只执行一次或根本不执行的情况。这些行为不仅未被文档记录,还暴露了实现细节对语义的渗透。NaN的怪异特性正在悄悄影响语言设计,值得开发者警惕。

"NaN很怪异,这意味着其他事物与它交互时也会变得怪异。"

同日更多故事 · 2026-07-14