Python 仍然令人惊讶 · kivikakk.ee

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

阅读 10
0 条评论