我正在从我自己的ac库中编写一个python
模块,我需要知道如何处理PyObject_GetItem()
函数,特别是key
参数,文档不是很有帮助我已经看到了一个解决方案的例子
Py_hash_t hash;
hash = PyObject_Hash(key);
但问题是,我希望能够知道key
是字符串还是整数。
如果有一种方法可以使用整数键来区分字符串键,我可以使用PyObject_Hash()
方法,因为我还可以使用Python哈希函数计算与字符串对应的哈希值,但是我可以使用它。 d而不是这样做,因为我已经在列表上实现了一个二进制搜索,我试图通过python中的下标来访问它。
我也试过
PyArg_ParseTuple(key, "i", ...);
并且字符串检查哪一个成功,但是解释器抛出异常,因为key
不是元组。
答案 0 :(得分:1)
我刚刚找到了正确执行的方法,有一个PyUnicode_Check()
宏,它接受一个PyObject
参数,如果对象不是0
,则返回unicode
} object,因此它为0
键返回int
,并为字符串键返回非零值。
这正是我所需要的,因为现在我可以继续提取文本并在我的列表中执行二进制搜索。
此外,还有一个PyObject_TypeCheck()
函数可以返回对象的类型,在这种情况下也非常有用。