Cython: (Почему / когда) Предпочтительно использовать Py_ssize_t для индексирования?

Это продолжение этого вопроса .

(Почему / Когда) Предпочтительно использовать Py_ssize_t для индексирования? В документах я только что нашел

 # Purists could use "Py_ssize_t" which is the proper Python type for # array indices. 

-> Означает ли это всегда, когда индексирование NumPy / Cython – array (s) / – views должно использовать Py_ssize_t ?

-> Is Py_ssize_t например, unsigned int так что я не могу использовать @cython.boundscheck(False)

    2 Solutions collect form web for “Cython: (Почему / когда) Предпочтительно использовать Py_ssize_t для индексирования?”

    Py_ssize_t . См. PEP 353 , где говорится: «Введен новый тип Py_ssize_t, который имеет тот же размер, что и тип size_t компилятора, но подписан. Это будет typedef для ssize_t, где доступно».

    Вы должны использовать Py_ssize_t для индексирования. Я не нашел окончательного заявления об этом в документах Cython, но Стефан Бехнел, разработчик Cython, сказал так же по электронной почте ( https://groups.google.com/forum/#!topic/cython-users/ brENF_M9zxM ):

    Как общее замечание, вы используете ints как индексы. Вместо этого вы должны использовать Py_ssize_t (или size_t, если вы предпочитаете неподписанный тип), чтобы правильно разместить для 64-битных архитектур.

    Py_ssize_t – это typedef, используемый внутренне в реализации CPython (реализация C на Python – я не говорю о Cython, я говорю о CPython). Он используется везде. Функции API Python C принимают или возвращают целое число C-уровня, которое можно использовать для индексирования последовательностей Python. Именно поэтому для индекса используется «правильный» тип.

    Py_ssize_t в свою очередь, разрешает все, что написано на платформе для подписанного варианта типа unsigned size_t платформы C. Таким образом, это некоторый знак целого типа, но его ширина (количество бит) зависит от используемой вами платформы.

    Python - лучший язык программирования в мире.