Если вы хотите передать по ссылке в C ++ или C ++ - объекты в Cython, вы должны передать его по ссылке, то есть сигнатура функции fun
должна быть
cdef fun( map[ string, double ] &a ):
...
Все объекты Pythonявляются указателями типа PyObject *
, а сигнатура
def fun(object a):
...
приблизительно переводится в
PyObject *fun(PyObject *a){
...
}
, то есть аргументы передаются как указатели, что соответствует ссылкам C ++ в чистом C.