使用CPython中的函数(如PyDict_SetItem和PyList_SetItem)关于所有权规则和引用计数的两个问题:
将对象引用传递给另一个函数时,通常, 函数借用你的参考 - 如果它需要存储它, 它将使用Py_INCREF()成为独立所有者。有 这条规则恰好有两个重要的例外:PyTuple_SetItem()和 PyList_SetItem()。这些功能接管项目的所有权 传递给他们 - 即使他们失败了! (注意PyDict_SetItem()和 朋友不接管所有权 - 他们是“正常的”。)
这在某种程度上是合乎逻辑的(这会使内化和记忆变得更容易)还是它很大程度上只是一个很久以前制定的设计决策的随机历史文物?