不可能`PyDict_DelItem`的原因

时间:2013-01-10 10:41:16

标签: python c api

我想知道Python C-API函数PyDict_DelItem的-1返回值的可能原因是什么。

我确信键和值存在于字典中,但不明白为什么有时候我得到-1返回值。我没有找到关于可能原因的文件。

1 个答案:

答案 0 :(得分:3)

来自source code

  • 第一个参数不是dict(PyDict_Check测试失败):引发SystemError
  • 密钥不可清除:可能会引发NotImplemented或其他异常,具体取决于确切的__hash__PyObject_Hash挂钩实现。
  • 在dict中找不到密钥:引发KeyError

在任何情况下PyDict_DelItem返回-1时,您需要检查exception being set