5
Ho un file Cython
chiamato foo.pyx
contenente le seguenti funzioni:Chiamata di funzioni Cython C da Python
def add_one(int n):
cdef int m = n + 1
return m
cdef int c_add_one(int n):
return n + 1
costruisco questo file pyx
utilizzando cython -a foo.pyx
e possono quindi fare:
>>> import foo
>>> foo.add_one(5)
6
>>> foo.c_add_one(5)
AttributeError: 'module' object has no attribute 'c_add_one'
Quindi sembra come non posso chiamare c_add_one
da python. Quali sono i vantaggi di dichiarare una funzione usando cdef
?
'cdef' definisce una funzione a cui è possibile accedere _only_ da C. Se si desidera che' c_add_one' sia accessibile da Python, si dovrebbe usare 'cpdef'. Il vantaggio di 'cdef' è quello di rimuovere il sovraccarico del livello Python quando lo si chiama. –