Правильность цинтона
-
28-10-2019 - |
Вопрос
Является ли код, созданный Cython, всегда так же правильный, как и код Python, из которого он был произведен?
Это может помочь другим читателям обратиться к использованию объявлений статического типа цинтона и других функций цинтона (если таковые имеются), хотя меня интересует только случай создания файлов цинтона, переименовав модули Python до *.pyx.
Я забочусь только о подмножестве питона, покрытого цинтоном.
Решение
Вообще да. Конечно есть ошибки (Тем не менее, многие вращаются вокруг расширения подмножества Python, ошибки, которые фактически делают сгенерированный код C неверным, являются относительно редкими), и есть несколько необходимых предостережения (Хотя кажется, что только один пункт в этом коротком списке отвлекает от семантики Python).
Когда вы добавляете статические типы в режиме Pure Python, существуют обстоятельства, когда это имеет значение, будь то скомпилирован как цинтон или запускается как код Python. На ум приходят беспигнированные целые числа (пример: как упомянуто в одной ссылке выше, -n
Будет обернуться, если n
не подписывается и range(-n, n)
следовательно, пуст), а также переполнение целого числа (Python продвигает int
S (с long
S) к long
S (Abritary-Presigion integers)).