Я импортирую библиотеку общих объектов, написанную на C, и вызывая некоторые функции-оболочки. Я сделал эту работу с использованием библиотеки Python.h.Изменение переменной Python, переданной функции C
У меня есть функция со следующим прототипом:
PyObject *Cal_readFile(PyObject *self, PyObject *args);
я разобрать следующие кортежи:
PyArg_ParseTuple(args, "sO", &filename, &result)
От питона вызов выглядит следующим образом:
result = []
status = Cal.readFile(filename, result)
print(result)
It называется прекрасным, и функция определенно работает. Моя цель - изменить переменную result
в вызываемой функции C. И это именно то, что я делаю. Я изменяю переменную результата внутри функции C и использую result = Py_BuildValue("[lO]", (long)comp, compList);
для ввода новых данных.
Однако, когда я тогда print
результат в Python У меня все еще есть тот же пустой список, с которого я начал.
Есть ли какой-то дополнительный шаг, который мне нужно сделать, чтобы изменить эту переменную python из функции C? Я не могу использовать его в return
, поскольку вы уже видите, что я собираю возвращаемый статус оттуда (это возвращение работает).
Edit: Некоторый код из readCal, которые могут быть полезны:
PyObject *result = NULL;
PyArg_ParseTuple(args, "sO", &filename, &result);
//Some creating of data is done, and then I am trying to set the list to that data:
result = Py_BuildValue("[lO]", (long)comp, compList);
Вы хотите, чтобы вы ** добавляли ** эти значения в список Python? Вы не можете ** заменить ** такую переменную, как на Python, и вообще не возможно в C. –
И, пожалуйста, предоставьте больше кода для 'Cal_readFile' –
@AnttiHaapala. Да, возможно, добавление может быть правильным. Файл довольно большой, поэтому я не вставлял его. Я отредактирую некоторые фрагменты, которые могут иметь значение. – ComputerLocus