У меня есть простой Astruct.pyx с определением структуры (Astruct.pxd):
cdef struct A:
int x
int y
int z
И функция Cython, которая его использует (struct_test.pyx):
from random import randint
from Astruct cimport A
def do():
N = 1000000
M = 65535
As = []
total = 0
for i in xrange(N):
cdef A a
a.x = randint(0, M)
a.y = randint(0, M)
a.z = randint(0, M)
As.append(a)
for i in xrange(N):
total += As[i].x + As[i].y + As[i].z
print total
Однако, когда я пытаюсь собрать struct_test.pyx, я получаю эту ошибку: «оператор cdef здесь не разрешен», указывая на «cdef A a». Он не жалуется на другое определение переменной A, если она находится вне цикла, но я не понимаю, что такого особенного в цикле for.