如何在Python对象上调用全局函数?

2024-05-16 22:14:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我看过这个页面:https://docs.python.org/3/c-api/object.html但是似乎没有任何方法可以调用像long_lshiftlong_or这样的函数

调用这些函数对我来说不是必要的,我也可以使用更通用的版本,尽管我更喜欢调用这些函数。不管怎样,有没有办法用这些?我需要包括什么?下面是一些示例代码,我想在其中使用它们(简化):

size_t parse_varint(parse_state* state) {
    int64_t value[2] = { 0, 0 };
    size_t parsed = parse_varint_impl(state, value);
    PyObject* low = PyLong_FromLong(value[0]);
    PyObject* high;

    if (value[1] > 0) {
         high = PyLong_FromLong(value[1]);
         PyObject* shift = PyLong_FromLong(64L);
         PyObject* high_shifted = long_lshift(high, shift);
         state->out = long_or(low, high_shifted);
    } else {
        state->out = low;
    }
    PyObject_Print(state->out, stdout, 0);
    return 0;
}

Tags: or函数sizeparsevalueoutlonglow