Cython | ||
Dato for første versjon | 2007 | |
---|---|---|
Paradigme | Imperativ , prosessuell , strukturert programmering | |
Forfatter | Greg Ewing | |
Utvikler | Stefan Behnel, Robert Bradshaw, Lisandro Dalcín, Mark Florisson, Vitja Makarov, Dag Sverre Seljebotn | |
Siste versjon | 0.29.23 (14. april 2021) | |
Skrive | statisk , svak | |
Påvirket av | Python | |
Påvirket | ... | |
Implementeringer | http://cython.org | |
Skrevet i | Python | |
Tillatelse | Apache lisens versjon 2.0 og Apache lisens | |
Nettsted | cython.org | |
Cython er et programmeringsspråk og kompilator som gjør det enkelt å skrive kompilert utvidelser for Python . Syntaksen til språket er veldig lik Python, men det støtter også en delmengde av C / C ++ -språket (variable erklæringer, funksjonsanrop, ...).
Den første fordelen med Cython er at den produserer mye kraftigere kode. I programmer som for eksempel krever manipulering av store matriser, kan forsterkningen gå opp til en faktor på 100. I tillegg lar Cython deg skrive Python-grensesnitt til eksterne biblioteker skrevet i C eller C ++.
Cython er tilgjengelig for de fleste driftssystemer .
Python-språket fra sin opprinnelse støtter skriving av moduler skrevet på språk C. Imidlertid er denne prosedyren arbeidskrevende og delikat. Cython-kompilatoren konverterer kildefilene på Cython-språk ( .pyx- utvidelse ) til C- eller C ++ -språk. For det andre er disse C / C ++ -filene samlet som biblioteker som er klare til å brukes med Python.
Cython automatiserer blant annet:
Selve Cython-kompilatoren er skrevet i Python.
Cython ble født som et delprosjekt av den gratis datamaskinalgebra-programvaren SageMath som en gaffel av Pyrex- språket . SageMath er en av programvarene som bruker de fleste funksjonene i Cython.
Programmer skrevet i Cython har .pyx-utvidelsen. I sin enkleste form ser Cython kildekode ut akkurat som Python kildekode. Imidlertid, mens variabler, i standard Python, er skrevet dynamisk; å skrive er valgfritt. Dette forbedrer ytelsen og konverterer Cython-løkker til C-løkker når det er mulig.
For eksempel :
def primes(int kmax): # L'argument sera converti en nombre ou provoquera un TypeError. cdef int n, k, i # Ces variables sont déclarées avec des types en C. cdef int p[1000] # un autre typage C result = [] # un typage Python if kmax > 1000: kmax = 1000 k = 0 n = 2 while k < kmax: i = 0 while i < k and n % p[i] != 0: i = i + 1 if i == k: p[k] = n k = k + 1 result.append(n) n = n + 1 return result