[Python] Python (long) int in cython

Pietro Battiston ml a pietrobattiston.it
Lun 2 Nov 2015 07:19:30 CET


Salve a tutti,

sto traducendo del codice in cython, ed ho un problema: avrei bisogno
di memorizzare in una variabile un intero arbitrariamente grande (in
realtà non così immenso, ma più di 64 bit). Ho pensato "niente di più
semplice: utilizziamo l'int Python" (o long int, sotto Python 2). Ma
non riesco a definirlo in nessun modo sotto Cython.

Come spiega la documentazione,¹ 
"The Python types int, long and bool are interpreted as C int, long
and bint respectively."
Quindi se scrivo "long", ottengo un intero con la dimensione di
macchina.
Ho trovato suggerito² di utilizzare

     cimport cython
     cdef cython.py_long num = 5Lo

che mi dà "'pylong' is not a type identifier", o 

     ctypedef class pylong [object PyLongObject, type PyLong_Type]:
         pass

     cdef pylong var

che mi dà "Name options only allowed for 'public', 'api', or 'extern' C
class".


Avete altre idee?

Grazie in anticipo,

Pietro Battiston

¹ http://docs.cython.org/src/tutorial/pure.html#c-types
² http://grokbase.com/t/gg/cython-users/137s2n6s5k/how-do-i-statically-
declare-a-python-integer-or-python-long-integer


Maggiori informazioni sulla lista Python