如何处理PyObject_GetItem()函数中的`key'参数

时间:2015-02-25 19:22:21

标签: python c python-c-extension

我正在从我自己的ac库中编写一个python模块,我需要知道如何处理PyObject_GetItem()函数,特别是key参数,文档不是很有帮助我已经看到了一个解决方案的例子

Py_hash_t hash;

hash = PyObject_Hash(key);

但问题是,我希望能够知道key是字符串还是整数。

如果有一种方法可以使用整数键来区分字符串键,我可以使用PyObject_Hash()方法,因为我还可以使用Python哈希函数计算与字符串对应的哈希值,但是我可以使用它。 d而不是这样做,因为我已经在列表上实现了一个二进制搜索,我试图通过python中的下标来访问它。

我也试过

PyArg_ParseTuple(key, "i", ...);

并且字符串检查哪一个成功,但是解释器抛出异常,因为key不是元组。

1 个答案:

答案 0 :(得分:1)

我刚刚找到了正确执行的方法,有一个PyUnicode_Check()宏,它接受一个PyObject参数,如果对象不是0,则返回unicode } object,因此它为0键返回int,并为字符串键返回非零值。

这正是我所需要的,因为现在我可以继续提取文本并在我的列表中执行二进制搜索。

此外,还有一个PyObject_TypeCheck()函数可以返回对象的类型,在这种情况下也非常有用。