2011-03-21 13 views
7

Czy kod produkowany przez Cython jest zawsze tak samo poprawny, jak kod Pythona, z którego został wyprodukowany?Poprawność kodu cnotonowego

Może pomóc innym czytelnikom w rozwiązaniu problemu z użyciem deklaracji typu statycznego Cythona i innych funkcji Cythona (jeśli istnieją), ale interesuje mnie tylko tworzenie plików w języku Cython poprzez zmianę nazwy modułów Pythona na * .pyx.

Dbam tylko o podzbiór Pythona, którego dotyczy Cython.

Odpowiedz

10

Generalnie tak. Oczywiście istnieje bugs (wiele z nich dotyczy rozszerzenia obsługiwanego podzestawu Pythona, ale błędy, które rzeczywiście powodują błędny kod C są stosunkowo rzadkie) i jest kilka niezbędnych caveats (chociaż wydaje się, że tylko jeden element na tej krótkiej liście odwraca się od Semantyka Pythona).

Gdy dodajesz typy statyczne w czystym trybie Pythona, istnieją okoliczności, w których robi różnicę, czy jest skompilowany jako Cython czy uruchamiany jako kod Pythona. Liczby całkowite nasuwają się (na przykład: jak określono w jednym z łącza powyżej -n się owinąć wokół jeśli n jest podpisany i range(-n, n) jest więc pusty), jak również całkowitą przelewowy (Python sprzyja int S (C long ów) long s (abritary -precyzyjne liczby całkowite)).

+0

Dzięki za odpowiedź. Najbardziej pocieszające byłoby wysłuchanie eksperta; czy pracujesz nad projektem Cython? BTW, podoba mi się projekt Cython; zapewnia mi funkcjonalność, której nie ma żadne inne narzędzie, które znalazłem. – Brian

+1

@Brian: Nie, nie jestem na tyle niesamowity, aby brać udział w Cython;) Jestem po prostu kolejnym użytkownikiem i studentem dokumentacji. Jeśli chcesz zapytać programistów, przynajmniej niektórzy z nich uczestniczą w liście dyskusyjnej '' cython-users' (http://groups.google.com/group/cython-users). – delnan

+0

Jestem deweloperem Cythona i mogę powiedzieć, że każda regresja z Pythona byłaby uważana za poważny błąd, chociaż należy pamiętać o zastrzeżeniach (w szczególności przy użyciu wyraźnie wpisanych liczb całkowitych typu C). – robertwb

Powiązane problemy