Python 如何处理`键';PyObject_GetItem()函数中的参数
我正在从自己的c库中编写一个Python 如何处理`键';PyObject_GetItem()函数中的参数,python,c,python-c-extension,Python,C,Python C Extension,我正在从自己的c库中编写一个python模块,我需要知道如何处理函数,特别是key参数,文档不是很有用,我已经看到了一个示例,其中说明了解决方案 Py_hash_t hash; hash = PyObject_Hash(key); 但问题是,我想知道key是字符串还是整数 如果有办法区分字符串键和整数键,我可以使用PyObject\u Hash()methdod,因为我还可以使用Python Hash函数计算对应于字符串的哈希值,但我不想这样做,因为我已经在列表上实现了一个二进制搜索,我正试
python
模块,我需要知道如何处理函数,特别是key
参数,文档不是很有用,我已经看到了一个示例,其中说明了解决方案
Py_hash_t hash;
hash = PyObject_Hash(key);
但问题是,我想知道key
是字符串还是整数
如果有办法区分字符串键和整数键,我可以使用PyObject\u Hash()
methdod,因为我还可以使用Python Hash函数计算对应于字符串的哈希值,但我不想这样做,因为我已经在列表上实现了一个二进制搜索,我正试图通过在python中订阅来访问它
我也试过了
PyArg_ParseTuple(key, "i", ...);
字符串检查哪个成功,但解释器抛出异常,因为
键不是元组。我刚刚找到了正确的方法,有一个宏,它接受单个PyObject
参数,如果对象不是unicode
对象,则返回0
,因此,它为int
键返回0
,为字符串键返回非零
这正是我所需要的,因为现在我可以继续提取文本并在列表中执行二进制搜索
此外,还有一个返回对象类型的函数,在这种情况下也非常有用。为什么需要知道类型?如果两者都不是呢?@IgnacioVazquez Abrams因为我想提供两种方法来获取元素,一种是通过索引,另一种是通过元素名称,每种方法都有一个名称关联,使用它来访问元素非常重要。在Python中,您将如何做?寻找适合您使用的Python工具的C-api等价物。@user2357112我不知道,因为我的Python知识有限。这就是为什么我要问这个问题,这也是为什么最初我没有在问题中添加标签。