2024 年 6 月 27 日,在使用 Python 工作了将近 20 年后,今天它仍让作者感到惊讶。作者习惯了语言将x += y
等视为x = x + y
的纯语法糖,却忘了有些语言并非如此。作者知道在一些语言中可以分别重写它们(例如在 C++中作者认为是这样,检查后也确实如此,但考虑到语言的范围这是合理的),但在 Ruby 中它们只是语法糖,所以作者以为在 Python 中也是如此。然而,作者惊讶地发现some_list += x
会就地修改some_list
(不同于some_list = some_list + x
),但观察后意识到存在单独重写的操作函数__iadd__
,所以认为一定是这样。但实际上,作者发现这些操作符实际上可以重新分配接收者,返回值被分配给左操作数,这只是一种约定。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。