Python | ||
Ensimmäisen version päivämäärä | 20. helmikuuta 1991 | |
---|---|---|
Paradigmat | Tarkoitus , välttämätön ja toimiva | |
Kirjoittaja | Guido van Rossum | |
Kehittäjät | Python Software Foundation | |
Viimeinen versio | 3,9,6 (28. kesäkuuta 2021) | |
Kehitettävä versio | 3.10.0b4 (10. heinäkuuta 2021) | |
Kirjoittaminen | Vahva , dynaaminen , ankka kirjoittaminen | |
Vaikuttanut | ABC , C , Eiffel , ICON , Modula-3 , Java , Perl , Smalltalk , Tcl | |
Vaikuttanut | Ruby , Groovy , Boo , Julia | |
Toteutukset | CPython , Jython , IronPython , PYPY | |
Kirjoitettu | C varten CPython, Java for Jython, C # ja IronPython ja Python itsensä PYPY | |
Käyttöjärjestelmä | Monialustainen | |
Lisenssi |
Ilmainen lisenssi : Python Software Foundation License |
|
Verkkosivusto | www.python.org | |
Tiedostopääte | py, pyc, pyd, pyo, pyw, pyz ja pyi | |
Python (lausutaan / s i . T ɔ / ) on ohjelmointikieli tulkita , moni- paradigma ja cross-platform . Se edistää jäsenneltyä , toimivaa ja olioihin suuntautuvaa pakollista ohjelmointia . Sillä on vahva dynaaminen tyypitys , automaattinen muistin hallintaa mukaan roskien keräys ja poikkeuksen hallintajärjestelmä ; se on siis samanlainen kuin Perl , Ruby , Scheme , Smalltalk ja Tcl .
Python kieli on asetettava vapaan lisenssin lähellä BSD-lisenssi ja toimii useimmissa laiteympäristöstä , mistä älypuhelimet ja keskustietokoneet , mistä Windows ja Unix kanssa erityisesti GNU / Linux kautta MacOS tai jopa Android- , iOS- , ja se voi myös olla käännetty Java- tai .NET-muotoon . Se on suunniteltu optimoimaan ohjelmoijien tuottavuus tarjoamalla korkean tason työkaluja ja helppokäyttöisen syntaksin .
Jotkut pedagogit arvostavat myös sitä, että he löytävät kielen, jossa syntaksin avulla, joka on selvästi erotettu matalan tason mekanismeista , voidaan helposti aloittaa ohjelmoinnin peruskäsitteet.
Python on ohjelmointikieli , jota voidaan käyttää monissa yhteyksissä ja joka voi mukautua mihin tahansa käyttöön erikoistuneiden kirjastojen ansiosta . Kuitenkin on erityisen käytetty skriptikieli jotta automatisoida yksinkertaisia mutta tylsiä tehtäviä, kuten kirjoitus , joka hakisi Sään vaikutukset Internetistä tai jotka integroituvat tietokone- suunnittelun ohjelmistot sisään jotta automatisoida tiettyjä sekvenssejä toistuvia toimia (ks adoptio- osiossa ). Sitä käytetään myös prototyyppikehityskielenä, kun tarvitaan toimiva sovellus ennen sen optimointia alemman tason kielellä. Se on erityisen yleinen tiedemaailmassa , ja siinä on monia kirjastoja, jotka on optimoitu numeeriseen laskentaan .
Myöhään 1980 , ohjelmoija Guido van Rossum on mukana kehittämässä ja ABC ohjelmointikieli on Centrum voor Wiskunde en Informatica (CWI) in Amsterdam , Alankomaat . Hän työskenteli Amebat käyttöjärjestelmän joukkue, jonka systeemikutsut oli vaikea rajapinta Bourne käyttää käyttöliittymää . Sitten hän uskoo, että ABC: n innoittama komentosarjakieli voisi olla mielenkiintoinen Amoeban komentotulkkina .
Vuonna 1989 hän käytti viikon lomaa joululomana hyödyntämällä henkilökohtaista tietokonettaan kielen ensimmäisen version kirjoittamiseen. Monty Pythonin Flying Circus -sarjan fani , hän päättää kastaa tämän projektin Python. Hänet inspiroi lähinnä ABC, esimerkiksi sisennys, kuten syntaksin tai korkean tason tyypit, mutta myös Modula-3 : sta poikkeusten käsittely , C-kieli ja UNIX-työkalut .
Seuraavan vuoden aikana Amoeba-projektitiimi alkoi ottaa kielen käyttöön, ja Guido jatkoi kehitystään lähinnä vapaa-ajallaan. SisäänHelmikuu 1991, ensimmäinen julkinen versio, numeroitu 0.9.0, on julkaistu Usenet alt.sources -foorumilla . Viimeisin CWI: ssä julkaistu versio on Python 1.2.
Vuonna 1995 , Van Rossum jatkoi työtään Python klo CNRI (in) in Reston , The Yhdysvallat , jossa hän julkaisi useita versioita ohjelmiston.
LähettäjäElokuu 1995, Python tiimi työskentelee NCRI on malja verkkoselaimen avulla Tk . Se on HotJava- selaimen Python-vastine , jonka avulla voit ajaa sovelmia turvallisessa ympäristössä. Ensimmäinen julkinen versio, joka on saatavana marraskuussa, on 0,2. Se ajaa moduulien kehittämistä tavalliselle kirjastolle, kuten rexec , htmllib tai urllib . Versio 0.6 on Graalin viimeinen ; se on julkaistuHuhtikuu 1999.
Vuonna 1999 , The Ohjelmoija Everybody (CP4E) hanke käynnistettiin yhdessä välissä CNRI ja DARPA . Ajatuksena on Python ohjelmointikieli opetuksen kieli . Tämä aloite johtaa IDLE- kehitysympäristön luomiseen . DARPA: n hankkeen rahoituksen puutteen vuoksi ja monien Python-kehittäjien poistuessa NCRI: stä (mukaan lukien Guido van Rossum), projekti kuoli vuonna 2000. Python 1.6 oli viimeinen NCRI: ssä julkaistu versio.
Vuonna 2000 ydin Python-kehitystiimi muutti BeOpen.com-sivustoon muodostamaan BeOpen PythonLabs -tiimin . Python 2.0 on ainoa BeOpen.com-sivustossa julkaistu versio. Tämän julkaisun jälkeen Guido Van Rossum ja muut PythonLabs-kehittäjät liittyivät Digital Creationsiin (tunnetaan nyt nimellä Zope Corporation ).
Andrew M.Kuchling julkaisee julkaisun Joulukuu 1999teksti nimeltä Python Warts , joka syntetisoi yleisimmät kielelle esitetyt epäkohdat. Tällä asiakirjalla on selvä vaikutus kielen tulevaan kehitykseen.
Python 2.1 on johdannainen versio Python 1.6.1: stä ja Python 2.0: sta. Sen käyttöoikeuden nimi on Python Software Foundation License . Kaikki koodit , dokumentaatiot ja määritykset, jotka on lisätty Python 2.1 alpha -version julkaisun jälkeen , on vuonna 2001 perustettu voittoa tavoittelematon organisaatio Python Software Foundation (PSF), jonka malli on Apache Software Foundation -sovelluksen malli .
Korjatakseen joitain kielivirheitä (esim. Olio suuntautunut kahden tyyppisillä luokilla ) ja puhdistamaan vanhentuneiden ja tarpeettomien elementtien vakiokirjaston, Python päätti rikkoa taaksepäin yhteensopivuuden uudessa pääversiossa, Python 3.0, julkaistujoulukuu 2008. Tätä versiota seuraa nopeasti versio 3.1, joka korjaa version 3.0 varhaiset virheet.
Python on suunniteltu luettavaksi kieleksi. Sen tavoitteena on olla visuaalisesti puhdas. Esimerkiksi sillä on vähemmän syntaktisia rakenteita kuin monilla strukturoiduilla kielillä, kuten C , Perl tai Pascal . Kommentit on merkitty ristillä (#).
Lohkot identifioidaan sisennystä sijasta housunkannattimet kuten C tai C ++ ; tai begin ... endkuten Pascal tai Ruby . Lisäämällä luetelmakohta alku lohkon, ja vähentää syvennys merkitsee loppua nykyisen lohkon. Sopimuksen mukaan (tällä hetkellä PEP8) sisennys on yleensä neljä välilyöntiä Pythonissa.
Kertoimen funktio C: ssä | Factorial-funktio Pythonissa |
---|---|
int factorielle(int n) { if (n < 2) { return 1; } else { return n * factorielle(n - 1); } } | def factorielle(n): if n < 2: return 1 else: return n * factorielle(n - 1) |
Huomaa: sisennystä voidaan muuttaa tai poistaa C-versiossa muuttamatta sen käyttäytymistä. Samoin Python-funktio voidaan kirjoittaa ehdollisella lausekkeella. Oikea sisennys helpottaa kuitenkin virheiden havaitsemista, kun useita lohkoja on sisäkkäin, ja helpottaa siten näiden virheiden poistamista. Siksi on suositeltavaa sisällyttää ohjelmat C-kirjaimella. Lyhyt versio kirjoitettaisiin seuraavasti:
Kertoimen funktio C: ssä | Factorial-funktio Pythonissa |
---|---|
int factorielle(int n) { return n < 2 ? 1 : n * factorielle(n - 1); } | def factorielle(n): return n * factorielle(n - 1) if n > 1 else 1 |
Python-kielellä varatut avainsanat ovat keyword.kwlistmoduuliluettelossa keyword.
Avainsanoja Python 2.7.5 ovat: and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield.
Python 3.0: sta lähtien, printeivätkä execne ole enää kieliasiasanoja, vaan moduulitoiminnot builtins. Lisätään hakusanat: True, False, Noneja nonlocal. Kolme ensimmäistä oli jo olemassa aiemmissa versioissa, mutta niitä ei enää voi muokata (aiemmin määritys True = 1oli mahdollista). nonlocalotettiin käyttöön PEP 3104, ja mahdollistaa, on määritetty toiminto sisällä toisen toiminnon, muuttaa muuttuvan korkeamman tason laajuus . Sitä ennen vain funktiolle paikalliset ja globaalit (moduulitaso) muuttujat olivat muokattavissa. Oli kuitenkin mahdollista, ja on edelleen ilman avainsanaa nonlocal, muokata objektia, joka on määritetty korkeamman tason muuttujalle, esimerkiksi luettelo menetelmällä append- tämä on tietenkin mahdotonta, jos objekti ei muutu .
PerustyypitPythonin perustyypit ovat suhteellisen kattavat ja tehokkaat. On muun muassa:
Iteroitavat objektit kierretään läpi forseuraavasti:
for element in objet_iterable: traiter(element)Merkkijonon kohdalla iteraatio etenee merkki kerrallaan.
On mahdollista johtaa luokkia perustyypeistä omien tyyppien luomiseksi. Kielen iterointiprotokollan avulla voit myös luoda omia iteroitavia objekteja perimättä peruskomponentteja.
Toiminnallinen ohjelmointiPython sallii ohjelmoinnin toiminnallisella tyylillä . Sillä on myös luettelo-ymmärryksiä , ja yleisemmin ymmärrykset voivat tuottaa generaattoreita, sanakirjoja tai sarjoja . Esimerkiksi, kun rakennamme luettelon neliöistä, joiden luonnollisten lukujen määrä on pienempi kuin 10, voimme käyttää lauseketta:
liste = [x**2 for x in range(10)] # liste = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Parillisten numeroiden luettelo :
liste = [entier for entier in range(10) if entier % 2 == 0] # liste = [0, 2, 4, 6, 8]Taulukko aakkoset ASCII- koodeista :
{chr(n): n for n in range(65, 91)}Kirjainsarja sanassa (tuottaa joukon {'r', 'c', 'd', 'b', 'a'}):
s = "abracadabra" {c for c in s}Ymmärtäminen voi koostua useista silmukoista ja suodattimista, ja kirjeenvaihto koodin kanssa suorittaa saman laskennan ohjeiden forja if :
Ymmärtäminen | Vastaava koodi |
---|---|
[ i + j if i != j else 0 for i in range(n) if i % 2 != 0 for j in range(n) if j % 3 != 0 ] | a = [] for i in range(n): if i % 2 != 0: for j in range(n): if j % 3 != 0: a.append(i + j if i != j else 0) |
Rajoittamaton muoto anonyymi toiminto on mahdollinen:
lambda x: x + 2Lambda-funktiot voidaan määritellä inline ja käyttää argumentteina funktionaalisissa lausekkeissa:
filter(lambda x: x < 5, une_liste)palauttaa luettelon, joka koostuu alle 5: n a_list-elementeistä. Sama tulos voidaan saada
[x for x in une_liste if x < 5]Python lambdas hyväksyy vain lausekkeita, eikä niitä voida käyttää yleistettyinä nimettöminä toimintoina; mutta Pythonissa kaikki toiminnot ovat objekteja, joten ne voidaan välittää argumentteina muille funktioille ja kutsua tarvittaessa. Itse asiassa def: llä määritetty funktio voidaan luoda toisen funktion sisällä, ja näin saadaan funktion määritelmä paikallisessa muuttujassa, esimerkiksi:
def filtre_inferieur_a_5(une_liste): def mon_filtre(x): # variable locale mon_filtre return x < 5 return filter(mon_filtre, une_liste)Paikallinen toiminto voi muokata sen luoneen toiminnon ympäristöä avainsanan ansiosta nonlocal(katso Sammutus (IT) ):
def accum(pas): total = 0 def ajoute(n): nonlocal total total += n * pas return total return ajouteSiten on mahdollista luoda useita akkuja, joista kukin viittaa omaan kokonaismääräänsä. Määritteen avulla on mahdollista käyttää paikallisen funktion ympäristöä __closure__.
Kohteen ohjelmointiKaikki perustyypit, toiminnot, luokkien esiintymät ( C ++ - ja Java-kielten "klassiset" objektit ) ja itse luokat (jotka ovat metaluokkien esiintymiä) ovat objekteja.
Luokka määritetään avainsanalla class. Luokat Python tukee moniperintää ; ei ole staattista ylikuormitusta, kuten C ++: ssa, tai perintörajoituksia, kuten Java-tapauksessa (luokka toteuttaa useita rajapintoja ja perii yhdestä luokasta), mutta valinnaisten argumenttien ja avainsanojen mekanismi on yleisempi ja joustavampi . Pythonissa objektin attribuutti voi viitata ilmentymään tai luokan muuttujaan (useimmiten menetelmä). Määritettä voidaan lukea tai muokata dynaamisesti funktioiden avulla:
Esimerkki kahdesta yksinkertaisesta luokasta:
class Personne: def __init__(self, nom, prenom): self.nom = nom self.prenom = prenom def presenter(self): return self.nom + " " + self.prenom class Etudiant(Personne): def __init__(self, niveau, nom, prenom): Personne.__init__(self, nom, prenom) self.niveau = niveau def presenter(self): return self.niveau + " " + Personne.presenter(self) e = Etudiant("Licence INFO", "Dupontel", "Albert") assert e.nom == "Dupontel" Erityiset menetelmät ja toimijoiden määritelmätPython tarjoaa tyylikkään, olio-orientoidun mekanismin ennalta määriteltyjen operaattorijoukkojen määrittelemiseksi: mille tahansa Python-objektille voidaan antaa ns.
Näitä menetelmiä, jotka alkavat ja päättyvät kahdella alaviivalla , kutsutaan käytettäessä operaattoria objektissa: +(method __add__), +=(method __iadd__), [](method __getitem__), ()(method __call__) jne. Menetelmät pitävät __repr__ja __str__antavat sinun määrittää objektin esityksen interaktiivisessa tulkissa ja sen renderoinnin tulostustoiminnon avulla .
Mahdollisuuksia on lukuisia, ja ne kuvataan kielidokumentaatiossa.
Voimme esimerkiksi määritellä kahden kaksiulotteisen vektorin lisäämisen seuraavalla luokalla:
class Vector2D: def __init__(self, x, y): # On utilise un tuple pour stocker les coordonnées self.coords = (x, y) def __add__(self, other): # L'instruction a+b sera résolue comme a.__add__(b) # On construit un objet Vector2D à partir des coordonnées propres à l'objet, et à l'autre opérande return Vector2D(self.coords[0]+other.coords[0], self.coords[1]+other.coords[1]) def __repr__(self): # L'affichage de l'objet dans l'interpréteur return "Vector2D(%s, %s)" %self.coords a = Vector2D(1, 2) b = Vector2D(3, 4) print(a + b) # Vector2D(4, 6) GeneraattoritFunktiossa yieldkäytetty avainsana mahdollistaa tämän toiminnon tekemisen generaattoriksi. Tämän toiminnon kutsuminen palauttaa tyypin generaattorin objektin , jota voidaan käyttää esimerkiksi silmukassa for.
Kullakin puhelulla generaattori suorittaa prosessinsa, kunnes se löytää avainsanan yield, palauttaa lausekkeen arvon yieldja jatkaa seuraavalla puhelulla sen kulkua heti yield. Esimerkiksi Fibonacci-sekvenssin laskemiseksi voimme kirjoittaa:
def gen_fibonacci(): """Générateur de la suite de Fibonacci""" a, b = 0, 1 while True: yield a # Renvoie la valeur de "a", résultat de l'itération en cours a, b = b, a + b fi = gen_fibonacci() for i in range(20): print(next(fi))Moduulin itertoolsavulla voit manipuloida generaattoreita. Esimerkiksi ensimmäisten 10 elementin purkamiseksi edellisestä generaattorista:
import itertools list(itertools.islice(gen_fibonacci(), 10)) # renvoie [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]Python 3.3: sta lähtien on mahdollista tuottaa generaattori rekursiivisesta funktiosta syntaksin ansiosta yield from, joka ilmestyi PEP 380: ssa ja joka "delegoi" laskennan aligeneraattorille. Seuraava esimerkki laskee kuningattarien permutaatiot, jotka vastaavat kahdeksan kuningattaren ongelman ratkaisuja, jotka on laajennettu shakkilaudalle, jonka koko on n × n.
def queens(n): a = list(range(n)) up = [True] * (2 * n - 1) down = [True] * (2 * n - 1) def sub(i): for k in range(i, n): j = a[k] p = i + j q = i - j + n - 1 if up[p] and down[q]: if i == n - 1: yield tuple(a) else: up[p] = down[q] = False a[i], a[k] = a[k], a[i] yield from sub(i + 1) up[p] = down[q] = True a[i], a[k] = a[k], a[i] yield from sub(0) sum(1 for a in queens(8)) # Nombre de solutions, renvoie 92Rakentaja voi näyttää samalta kuin funktio, joka palauttaa luettelon, mutta toisin kuin luettelo, joka sisältää kaikki sen elementit, rakentaja laskee elementit yksitellen .
Siten testi 36 in [n * n for n in range(10)]suoritetaan luettelossa, joka on laskettu kokonaan, kun taas 36 in (n * n for n in range(10))generaattoria käyttävässä ryhmässä neliöiden laskeminen lopetetaan heti, kun 36 löytyy. Voimme vakuuttaa itsemme tästä korvaamalla sen n * ntoimintakutsulla, joka tuottaa reunatehosteen , esimerkiksi näytön ruudulla.
Sanakirjojen ( hash-taulukoilla kehitetyn assosiatiivisen säiliön ) intensiivisen käytön ansiosta Python antaa mahdollisuuden tutkia kielen eri esineitä ( itsetutkiskelu ) ja tietyissä tapauksissa muokata niitä ( esirukous ).
Tyypitys ei tarkisteta kokoelma. Python käyttää ankka-kirjoittamista : ajon aikana, jos objektille kutsutulla menetelmällä on sama allekirjoitus kuin tällä objektilla ilmoitetulla menetelmällä, jälkimmäinen menetelmä suoritetaan. Siksi menetelmän, jota ei ole olemassa objektissa, käyttäminen epäonnistuu, mikä tarkoittaa, että kyseinen kohde ei ole oikean tyyppinen. Staattisen kirjoittamisen puuttumisesta huolimatta Python kirjoitetaan voimakkaasti, ja se kieltää merkityksettömät toiminnot (esimerkiksi lisäämällä numeron merkkijonoon) sen sijaan, että yritettäisiin hiljaa muuttaa sitä merkitykselliseksi muodoksi. Python tarjoaa toimintoja muuttujien muuntamiseksi toiseksi tyypiksi:
points = 3.2 # points est du type float print("Tu as " + points + " points !") # Génère une erreur de typage points = int(points) # points est maintenant du type int (entier), sa valeur est arrondie à l'unité inférieure (ici 3) print("Tu as " + points + " points !") # Génère une erreur de typage points = str(points) # points est maintenant du type str (chaîne de caractères) print("Tu as " + points + " points !") # Plus d'erreur de typage, affiche 'Tu as 3 points !'Python tarjoaa myös staattisen kirjoitusmekanismin luokkamääritteille , jotka käyttävät piirteen API: ta tai sisustajien suunnittelukuviota .
MerkinnätVersiosta 3.0 lähtien Python tarjoaa merkintöjä funktioiden muuttujista (esitelty PEP 3107: ssä). Tämä tekee koodista luettavamman toimimatta staattisena kirjoitusratkaisuna, koska mikään ei velvoita seuraamaan näitä merkintöjä.
def hello(name: str) -> str: return "Hello {} !".format(name) hello("Alice") # Appel suggéré par les annotations hello(True) # Appel non conforme mais tout à fait fonctionnelLisäksi versiosta 3.5 lähtien Python tarjoaa kirjoitusmoduulin (esitelty PEP 484: ssä).
from typing import List def split_string(string: str) -> List[str]: return string.split(" ") KokoelmaPython-moduulien staattinen analyysi on mahdollista suorittaa työkaluilla, kuten Pylint, mypy tai PyChecker. Nämä työkalut havaitsevat viat tai vanhentuneet rakenteet vaatimatta suoritusta. Esimerkiksi luokka, joka perii abstraktista luokasta ja joka ei määrittele uudelleen abstrakteja menetelmiä tai muuttujia, joita käytetään ennen ilmoitusta, tai esimerkkejä, jotka on ilmoitettu menetelmän ulkopuolella __init__.
On myös mahdollista luoda Python- välikoodi ( tavukoodi ).
Työkaluja kuten PyInstaller tai muita tarkempia kuin cx_Freeze alle Unix , Windows ja MacOS , py2app alle MacOS ja py2exe alle Windows annetaan "koota" Python ohjelma muodossa suoritettavan sisältää ohjelman ja Python-tulkki.
Ohjelma ei toimi nopeammin (sitä ei käännetä konekoodina), mutta se yksinkertaistaa huomattavasti sen jakelua, varsinkin koneissa, joihin Python-tulkki ei ole asennettuna.
Pythonissa kaikki on esine siinä mielessä, että muuttuja voi sisältää viittauksen kaikkiin kielen käsittelemiin elementteihin: numeroihin, menetelmiin, moduuleihin jne. . Kuitenkin ennen versiota 2.2 luokat ja luokan instanssit olivat erityinen objektityyppi, mikä tarkoitti sitä, että esimerkiksi oman alaluokan johtaminen luettelo- objektista oli mahdotonta .
MenetelmätPythonin objektimalli on innoittamana Modula-3: sta. Näiden lainojen joukossa on velvollisuus ilmoittaa nykyisen objektin esiintymä, jota kutsutaan perinteisesti itseksi , menetelmien ensimmäiseksi argumentiksi, ja joka kerta, kun haluamme käyttää tämän tapauksen tietoja tämän menetelmän rungossa. Tämä käytäntö ei ole luonnollista ohjelmoijille, jotka tulevat esimerkiksi C ++: sta tai Java: sta, itsensä runsaus kritisoidaan usein visuaalisena pilaantumisena, joka estää koodin lukemista. Päinvastoin, nimenomaisen itsensä promoottorit uskovat, että se välttää nimeämiskäytäntöjen käyttöä jäsendatassa ja yksinkertaistaa tehtäviä, kuten superluokan menetelmän kutsuminen tai jäsendatan välisen erottelun ratkaiseminen.
Python tunnistaa kolmen tyyppiset menetelmät:
Kielellä on hyvin rajoitettu tuki kapseloinnille . Esteettömyyden hallintaa avainsanoilla kuten protectedtai ei ole, kuten esimerkiksi Javassa private.
Pythonin filosofia on käsitteellisesti erottaa kapselointi tiedon piilottamisesta. Tietojen peittämisen tarkoituksena on estää vilpillinen käyttö, se on huolta tietoturvasta . Linnake moduuli standardin kirjasto, jota ei enää ylläpidetään uusimmat versiot kieltä, mikä mahdollisti valvonnan pääsy ominaisuudet esineen puitteissa rajoitettu suoritusympäristön.
Kapselointi on ohjelmistokehityskysymys. Python-kehittäjien iskulause on, että me kaikki olemme suostuneita aikuisia täällä . Heidän mielestään riittää, että liitäntöjen julkiset osat ilmoitetaan kirjoittamalla yleissopimuksia ja että esineiden käyttäjien on noudatettava näitä sopimuksia tai otettava vastuunsa. Tavalla on, että yksityiset jäsenet etuliitetään alaviivalla. Kieli sallii myös kaksinkertaisen alaviivan käytön nimien törmäysten välttämiseksi, lisäämällä tietojen etuliitteeseen automaattisesti sen luokan nimi, jossa se on määritelty.
Funktion käyttö property()antaa mahdollisuuden määritellä ominaisuuksia, joiden tarkoituksena on menetelmien avulla siepata pääsy tietojäsenelle. Tämä tekee tarpeettomaksi järjestelmällisesti määritellä Aksessorit ja piilota tiedot, kuten on tavallista C ++ esimerkiksi.
PerintöPython tukee useita perintöjä . Versiosta 2.3 lähtien se käyttää Dylan- kielestä johdettua C3 (en) -algoritmia ratkaisemaan menetelmän resoluutiojärjestys ( MRO ). Aikaisemmissa versioissa käytettiin syvää läpikulkualgoritmia, joka aiheutti ongelmia timanttiperintöjen tapauksessa .
Pythonilla on suuri standardikirjasto , joka tarjoaa työkaluja moniin erilaisiin tehtäviin. Vakiokirjaston moduulien määrää voidaan lisätä erityisillä moduuleilla, jotka on kirjoitettu C- tai Python-muodossa.
Vakiokirjasto on erityisesti suunniteltu kirjoittamaan sovelluksia, jotka käyttävät Internetiä, ja tukee useita vakiomuotoja ja -protokollia (kuten MIME ja HTTP ). Mukana on myös moduuleja graafisten rajapintojen luomiseksi ja säännöllisten lausekkeiden manipuloimiseksi . Python sisältää myös puitteet varten yksikkötestaus ( unittestent PyUnit ennen versiota 2.1) luoda sviittiä kattavia testejä.
Vaikka jokainen ohjelmoija voi hyväksyä omat käytäntönsä Python-koodin kirjoittamiseksi, Guido van Rossum on toimittanut oppaan, jota kutsutaan nimellä "PEP 8". Julkaistu vuonna 2001, sitä ylläpidetään edelleen kielen muutosten mukauttamiseksi. Google tarjoaa myös oppaan.
Pythonilla on useita moduuleja graafisen käyttöliittymän omaavien ohjelmistojen luomiseen . Yleisin on Tkinter . Tämä moduuli soveltuu moniin sovelluksiin, ja sitä voidaan pitää riittävänä useimmissa tapauksissa. Muita moduuleja on kuitenkin luotu yhdistämään Python muihin ohjelmistokirjastoihin (" työkalupakki "), lisää toimintoja, integroitumista paremmin käytettyyn käyttöjärjestelmään tai yksinkertaisesti voidakseen käyttää Pythonia suosikkikirjastonsa kanssa. Jotkut ohjelmoijat pitävät Tkinterin käyttöä tuskallisempana kuin muut kirjastot. Nämä muut moduulit eivät ole osa vakiokirjastoa, joten ne on hankittava erikseen.
Päämoduulit tarjoaa pääsyn GUI kirjastot ovat Tkinter ja PMW (Python megawidgets) ja Tk , wxPython varten wxWidgets , PyGTK varten GTK + , PyQt ja PySide varten Qt , ja lopuksi FxPy varten FOX Toolkit . On myös mukaelma SDL kirjasto : pygame , joka on sitova ja SFML : PySFML sekä kirjasto kirjoitettu erityisesti Python: Pyglet (en) .
On myös mahdollista luoda Silverlight- sovelluksia Pythonissa IronPython- alustalla .
Guido van Rossum on Pythonin tärkein kirjoittaja, ja hänen roolinsa Pythonin pysyvänä keskuspäätöksentekijänä tunnustetaan humoristisesti nimellä " hyväntahtoinen elämän diktaattori " ( BDFL). Siitä asti kunheinäkuu 2018, Guido van Rossum ilmoitti olevansa pysyvällä lomalla BDFL: n roolistaan. Hän peruutti myös ehdokkuutensa ohjauskielineuvostoon vuonnamarraskuu 2019.
Häntä avustaa joukko keskeisiä kehittäjiä , joilla on kirjoitusoikeudet CPython arkistoon ja koordinoida on python-dev listaa. He työskentelevät pääasiassa peruskielen ja kirjaston parissa. He saavat toisinaan avustuksia muilta Python-kehittäjiltä RoundF- virheenhallinta-alustan kautta , joka korvasi SourceForgen .
Kolmansien osapuolien kirjastojen käyttäjät tai kehittäjät käyttävät useita muita resursseja. Pythonin tärkein yleinen media on englanninkielinen Usenet-foorumi comp.lang.python.
Viittaukset Monty Pythoniin ovat melko yleisiä. Python opetusohjelmia käyttävät usein sanoja roskapostin ja munia kuin metasyntax muuttuja . Tämä on viittaus Monty Python Spam luonnos , jossa kaksi asiakkaat yrittää tilata aterian sellaisen kortin, joka on roskapostista tuotemerkin purkitettu kinkkua lähes joka lautasen. Tämä luonnos otettiin myös viittaamaan ei-toivottuun sähköpostiin .
Useat yritykset tai organisaatiot mainitsevat virallisilla verkkosivuillaan käyttävänsä Pythonia:
Python on myös komentokieli suurelle määrälle ilmaisia ohjelmistoja:
Ja kaupallinen:
Pythonia käytetään ohjelmointikielenä keskiasteen ja korkeakouluissa, erityisesti Ranskassa. Vuodesta 2013 lähtien sitä on opetettu siellä samaan aikaan kuin Scilab , kaikille valmistavien luonnontieteen luokkien opiskelijoille osana yhteistä ydintä (tietojenkäsittelytiede kaikille). Aikaisemmin tietojenkäsittelytieteen koulutus rajoittui yhteen optioon MP: ssä, opetuksen ollessa Camlin tai Pascalin kielellä . Tämä vaihtoehto on edelleen olemassa, mutta Pascal hylättiin kilpailujen 2015 istunnosta, joten vain Caml pysyy tässä opetuksessa. Ensimmäiset kilpailutestit Python-kielellä ovat myös vuoden 2015 istunnon testit.
Viiteversio , nimeltään CPython (koska kirjoitettu C- kielellä ), on muita järjestelmiä, jotka toteuttavat Python-kielen:
Nämä muut versiot eivät välttämättä hyödy koko viitekirjaversiossa C kirjoitettujen toimintojen kirjastosta eivätkä uusimmista kielikehityksistä.
Saatavilla on erilaisia jakeluja, jotka sisältävät joskus paljon paketteja, jotka on omistettu tietylle verkkotunnukselle:
Nämä eivät ole erilaisia Python-kielen toteutuksia : ne perustuvat CPythoniin, mutta niiden mukana on esiasennettu useita kirjastoja.
Versio | Julkaisupäivä | Tuen loppu | Uutuudet |
---|---|---|---|
1,5 (.2) | 3. tammikuuta 1998 | 13. huhtikuuta 1999 |
|
1.6 | 5. syyskuuta 2000 | Syyskuu 2000 |
|
2.0 | 16. lokakuuta 2000 | 22. kesäkuuta 2001 |
|
2.1 | 15. huhtikuuta 2001 | 9. huhtikuuta 2002 |
|
2.2 | 21. joulukuuta 2001 | 30. toukokuuta 2003 |
|
2.3 | 29. kesäkuuta 2003 | 11. maaliskuuta 2008 | |
2.4 | 30. marraskuuta 2004 | 19. joulukuuta 2008 |
|
2.5 | 19. syyskuuta 2006 | 26. toukokuuta 2011 |
|
2.6 | 1. st Lokakuu 2008 | 24. elokuuta 2010 (tietoturvapäivitykset asti 29. lokakuuta 2013) |
|
2.7 | 3. heinäkuuta 2010 | 1. st Tammikuu 2020 |
|
3.0 | 3. joulukuuta 2008 | 13. helmikuuta 2009 |
Katso lisätietoja PEP 3100 : sta |
3.1 | 27. kesäkuuta 2009 | 12. kesäkuuta 2011 (tietoturvapäivitykset asti Kesäkuu 2012) |
|
3.2 | 20. helmikuuta 2011 | 13. toukokuuta 2013 (tietoturvapäivitykset asti 20. helmikuuta 2016) |
|
3.3 | 29. syyskuuta 2012 | 8. maaliskuuta 2014 (tietoturvapäivitykset asti 29. syyskuuta 2017) |
|
3.4 | 16. maaliskuuta 2014 | 9. elokuuta 2017 (tietoturvapäivitykset asti 18. maaliskuuta 2019) |
|
3.5 | 13. syyskuuta 2015 | 8. elokuuta 2017 (tietoturvapäivitykset asti 13. syyskuuta 2020) |
|
3.6 | 23. joulukuuta 2016 | 24. joulukuuta 2018 (tietoturvapäivitykset asti joulukuu 2021) |
|
3.7 | 31. tammikuuta 2018 | 27. kesäkuuta 2020 (tietoturvapäivitykset asti Kesäkuu 2023) |
|
3.8 | 14. lokakuuta 2019 | Huhtikuu 2021 (tietoturvapäivitykset asti Lokakuu 2024) |
|
3.9 | 5. lokakuuta 2020 | Toukokuu 2022 (tietoturvapäivitykset asti Lokakuu 2025) |
|
Python-parannusehdotukset (tai PEP: Python-parannusehdotus ) ovat teksti-asiakirjoja, jotka on tarkoitettu poluksi Pythonin parantamiseksi ja ennen kaikkia sen muutoksia. PEP on kehityssuunnitteluehdotus (PEP-prosessi) , tekninen ehdotus (Standard Track PEP) tai yksinkertainen suositus ( Information PEP ). Tunnetuin PEP on PEP 8 koodityylioppaastaan.
Vuonna 2009 se on Pythonin versio 3, joka korvaa yhä useammin version 2 (projektin nimi oli alun perin "Python 3000" tai "Py3K") ilman taaksepäin yhteensopivuutta versioiden 2.x sarjan kanssa, jotta voidaan poistaa heikkoudet. kieli. Projektin ohjeena oli "vähentää Python-redundanssia poistamalla vanhentuneet menetelmät". Python 3.0a1, ensimmäinen alfa-versio, julkaistiin31. elokuuta 2007, ja on PEP, joka sisältää yksityiskohtaiset tiedot suunnitelluista muutoksista, sekä sivu, joka opastaa ohjelmoijia heidän valinnassaan Python 2 tai 3.
Laskurit, jotka on tarkoitettu lukiolaisille (mukaan lukien Casio , NumWorks , Texas Instruments ...) ja tukevat Python-työtä Python 3: ssa. Nämä laskimet voivat vaihtaa ohjelmia henkilökohtaisten tietokoneiden kanssa .
FilosofiaPython 3 kehitettiin samalla filosofialla kuin aiemmissa versioissaan, joten kaikki viittaukset Pythonin filosofiaan pätevät myös versioon 3. Kieli oli kuitenkin päätynyt keräämään useita tarpeettomia menetelmiä. Pyrittäessä poistamaan redundanssia kielessä ja sen moduuleissa, Python 3 noudattaa Pythonin ohjetta "Pitäisi olla vain yksi menetelmä, joka on sekä optimaalinen että luonnollinen kaikelle".
Python 3 on edelleen moniparadigman kieli. Ohjelmoijilla on edelleen mahdollisuus valita kohde-orientaatio, jäsennelty ohjelmointi, toiminnallinen ohjelmointi ja muut paradigmat; Python 3 on tarkoitettu käytettäväksi luonnollisemmin kuin 2.x-versioissa, vaikka se printvaatii sulkujen käyttöä toisin kuin Python 2.
Suunnittelu ja yhteensopivuusPython 3.0a1, Python 3.0: n ensimmäinen alfaversio, julkaistiin 31. elokuuta 2007. Pythonin 2.x- ja 3.x-versiot julkaistaan rinnakkain useille kehitysjaksoille, joiden aikana 2.x-sarja pysyy ensisijaisesti yhteensopivuuden vuoksi, mukaan lukien jotkut Python 3.x: stä tuotavat ominaisuudet. PEP 3000 sisältää lisätietoja version julkaisuprosessista.
Kuten Perl 6 , Python 3.0 rikkoo yhteensopivuutta taaksepäin (taaksepäin). 2.x-sarjaan kirjoitetun koodin käyttöä ei voida taata Python 3.0: lla. Jälkimmäinen tuo mukanaan perustavanlaatuisia muutoksia, kuten täydellisen siirtymisen Unicode-koodiin ja tästä syystä välttämättömän eron merkkijonojen ja "tavujen" objektien välillä. Tiettyihin menetelmiin liittyvä dynaaminen kirjoittaminen sanakirjan kaltaisissa kohteissa tekee saumattomasta siirtymisestä Python 2.x: stä Python 3.0: ksi. "2to3" -niminen työkalu kääntää pääosan 2.x-versioista 3.x-versioiksi ja ilmoittaa viimeistelyä vaativat koodialueet erityiskommenteilla ja varoituksilla. Ennen julkaisua 2to3 näyttää onnistuneen rehellisesti oikean käännöksen saavuttamisessa. Osana siirtymistä Python 2.x: stä Python 3.x: iin PEP 3000 suosittelee alkuperäisen koodin säilyttämistä muutosten perustana ja sen kääntämisen 3.x-alustalle käyttäen 2to3: ta.
Python 2.6 tarjoaa alku taaksepäin yhteensopivuudelle sekä "varoitus" -tilan, jonka pitäisi lisätä tietoisuutta mahdollisista siirtymisongelmista siirtyessäsi Python 3: een.
Python-versioita, jotka soveltuvat Androidille ja iPhonelle, on versiossa 2.5 tai 2.6. Saatavana iOS Jailbreak on iOS kiitos "setup työkalut", ja Android ansiosta SL4A joka jopa antaa mahdollisuus tehdä pieniä graafisia käyttöliittymiä kiitos "android" moduuli ja jonka avulla lähettää tekstiviestejä , että kytkin kameran tai värisemään puhelinta. Seuraavat rivit osoittavat, miten tämä tehdään:
droid = android.Android() # client lié au serveur local lancé par l'application SL4A # pour contrôler un téléphone distant à l'adresse 192.168.0.5, avec SL4A lancé sur le port 9887 # il suffit de faire : android.Android('192.168.0.5', 9887) droid.vibrate(2.5) # fait vibrer le téléphone (local ou distant) pendant 2.5 secondesPython-portti Blackberry- terminaaleissa julkaistiin vuonnaKesäkuu 2012, BlackBerry OS 10 -järjestelmälle . Kevyempi versio julkaistiin vuonnasyyskuu 2012, nimeltään "BlackBerry-Tart", englanninkielisten sanojen vuoksi: " " torttu "on kevyempi kuin" piirakka ", viitaten perinteiseen" omenapiirakkaan ". Se perustuu Python 3.2.2: een.