Файлы form .py не считываются в C

#python #c #python-c-api

#python #c #python-c-api

Вопрос:

Допустим, у меня есть float x из main

 import progC
def main():
     x = 3
     y=progC(x)
     print y

if __name__ == __main__
     main()
  

 #include <Python.h>

static PyObject* py_bracket(PyObject* self, float x){
    x = x 5;
    return Py_BuildValue("d",x);
}
  

хорошо, проблема в том, что мой float x в моей программе C получает 0, а не число 3 из python

Ответ №1:

Попробуйте это:

 static PyObject* py_bracket(PyObject* self, PyObject* args){
    float x;
    if (!PyArg_ParseTuple(args, "f", amp;x))
        return NULL;
    x = x 5;
    return Py_BuildValue("f",x);
}
  

Ответ №2:

На мой взгляд, проблему можно было бы решить, используя int вместо float . Переменные Python по умолчанию занимают 12 байт памяти, а «C float» — только 4. Второй вариант использует, PyTypeObject PyFloat_Type который указывает, что float тип является обязательным.