Python | ||
Dato for første versjon | 20. februar 1991 | |
---|---|---|
Paradigmer | Formål , viktig og funksjonelt | |
Forfatter | Guido van Rossum | |
Utviklere | Python Software Foundation | |
Siste versjon | 3.9.6 (28. juni 2021) | |
Utviklingsversjon | 3.10.0b4 (10. juli 2021) | |
Skrive | Sterk , dynamisk , andetyping | |
Påvirket av | ABC , C , Eiffel , ICON , Modula-3 , Java , Perl , Smalltalk , Tcl | |
Påvirket | Ruby , Groovy , Boo , Julia | |
Implementeringer | CPython , Jython , IronPython , PyPy | |
Skrevet i | C for CPython, Java for Jython, C # for IronPython og i Python selv for PyPy | |
Operativsystem | Multiplatform | |
Tillatelse |
Gratis lisens : Python Software Foundation License |
|
Nettsted | www.python.org | |
Filutvidelse | py, pyc, pyd, pyo, pyw, pyz og pyi | |
Python (uttalt / p i . T ɔ / ) er et programmeringsspråk tolket , multi- paradigme og tverrplattform . Det fremmer strukturert , funksjonell og objektorientert imperativ programmering . Den har sterk dynamisk skriving , automatisk minnehåndtering ved søppelinnsamling og et unntaksstyringssystem ; det ligner dermed på Perl , Ruby , Scheme , Smalltalk og Tcl .
Python-språket er plassert under en gratis lisens nær BSD-lisensen og fungerer på de fleste datamaskinplattformer , fra smarttelefoner til mainframe-datamaskiner , fra Windows til Unix med spesielt GNU / Linux via macOS , eller til og med Android , iOS , og kan også være oversatt til Java eller .NET . Den er designet for å optimalisere produktiviteten til programmerere ved å tilby verktøy på høyt nivå og en brukervennlig syntaks .
Det er også verdsatt av noen pedagoger som finner i det en språk der syntaksen, klart adskilt fra lavnivå mekanismer , gir en enkel innvielse til de grunnleggende begrepene programmering.
Python er et programmeringsspråk som kan brukes i mange sammenhenger og tilpasse seg alle typer bruk takket være spesialiserte biblioteker . Det brukes imidlertid spesielt som et skriptspråk for å automatisere enkle, men kjedelige oppgaver, for eksempel et skript som vil hente været fra Internett eller som vil integreres i datastøttet designprogramvare for å automatisere visse sekvenser av repeterende handlinger (se Adopsjon- delen ). Det brukes også som et prototyputviklingsspråk når en funksjonell applikasjon er nødvendig før du optimaliserer det med et språk på lavere nivå. Det er spesielt utbredt i den vitenskapelige verden , og har mange biblioteker optimalisert for numerisk beregning .
På slutten av 1980 - tallet var programmerer Guido van Rossum involvert i utviklingen av ABC- programmeringsspråket ved Centrum voor Wiskunde en Informatica (CWI) i Amsterdam , Nederland . Deretter jobbet han i Amoeba- operativsystemteamet , hvis systemanrop var vanskelig å grensesnitt med Bourne-skallet som ble brukt som brukergrensesnitt . Han mener da at et skriptspråk inspirert av ABC kan være interessant som kommandotolk for Amoeba.
I 1989 utnyttet han en ukes ferie i juleferien , og brukte sin personlige datamaskin til å skrive den første versjonen av språket. Fan av TV-serien Monty Python's Flying Circus , bestemmer han seg for å døpe dette prosjektet Python. Han ble hovedsakelig inspirert av ABC, for eksempel for innrykk som syntaks eller typer på høyt nivå, men også fra Modula-3 for håndtering av unntak , C-språk og UNIX-verktøy .
I løpet av året etter begynte språket å bli vedtatt av Amoeba-prosjektgruppen, med Guido som fortsatte å utvikle seg hovedsakelig på fritiden. IFebruar 1991, den første offentlige versjonen, nummerert 0.9.0, er lagt ut på Usenet alt.sources forum . Den siste versjonen utgitt på CWI er Python 1.2.
I 1995 fortsatte Van Rossum sitt arbeid med Python ved CNRI (in) i Reston , USA , hvor han ga ut flere versjoner av programvaren.
Fra'August 1995, jobber Python-teamet på NCRI på Grail en nettleser ved hjelp av Tk . Det er Python-ekvivalenten til HotJava- nettleseren , slik at du kan kjøre applets i et sikkert miljø. Den første offentlige versjonen, tilgjengelig i november, er 0,2. Det driver utviklingen av moduler for standardbiblioteket som rexec , htmllib eller urllib . Versjon 0.6 blir den siste fra Grail ; den er publisert iApril 1999.
I 1999 ble prosjektet Computer Programming for Everybody (CP4E) lansert i fellesskap mellom CNRI og DARPA . Det handler om å bruke Python som programmeringsundervisningsspråk . Dette initiativet vil føre til etableringen av IDLE- utviklingsmiljøet . På grunn av manglende finansiering av prosjektet fra DARPA, og mange Python-utvikleres avgang fra NCRI (inkludert Guido van Rossum), døde prosjektet i 2000. Python 1.6 var den siste versjonen som ble utgitt på NCRI.
I 2000 flyttet kjernen til Python-utvikling til BeOpen.com for å danne BeOpen PythonLabs- teamet . Python 2.0 er den eneste versjonen som er utgitt på BeOpen.com. Etter denne utgivelsen ble Guido Van Rossum og de andre PythonLabs-utviklerne med på Digital Creations (nå kjent som Zope Corporation ).
Andrew M. Kuchling publiserer i Desember 1999en tekst som heter Python Warts , som syntetiserer de hyppigste klagene som uttrykkes mot språket. Dette dokumentet vil ha en bestemt innflytelse på den fremtidige utviklingen av språket.
Python 2.1 er en avledet versjon av Python 1.6.1 og Python 2.0. Lisensen er omdøpt til Python Software Foundation License . Enhver kode , dokumentasjon og spesifikasjon som er lagt til siden utgivelsen av Python 2.1 alpha eies av Python Software Foundation (PSF), en ideell organisasjon grunnlagt i 2001, modellert etter Apache Software Foundation .
For å fikse noen språkfeil (f.eks objektorientert med to typer klasser ), og for å rydde opp i standard bibliotek av sine foreldede og overflødige elementer, valgte Python å bryte bakoverkompatibilitet i den nye hovedversjon, Python 3.0, publisert idesember 2008. Denne versjonen blir raskt fulgt av en versjon 3.1 som korrigerer de tidlige feilene i versjon 3.0.
Python ble designet for å være et lesbart språk. Det tar sikte på å være visuelt ren. For eksempel har den færre syntaktiske konstruksjoner enn mange strukturerte språk som C , Perl eller Pascal . Kommentarer er merket med kryss tegnet (#).
De blokker er identifisert med hakk i stedet for bukseseler som C eller C ++ ; eller begin ... endsom i Pascal eller Ruby . Å øke innrykket markerer starten på en blokk, og å redusere innrykket markerer slutten på den nåværende blokken. Etter konvensjon (for tiden PEP8) er fordypningen vanligvis fire mellomrom i Python.
Faktorfunksjon i C | Faktorfunksjon i Python |
---|---|
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) |
Merk: Innrykket kan endres eller fjernes i C-versjonen uten å endre oppførselen. På samme måte kan Python-funksjonen skrives med et betinget uttrykk. Imidlertid gjør riktig innrykk det lettere å oppdage feil når flere blokker er nestet, og letter derfor eliminering av disse feilene. Dette er grunnen til at det er å foretrekke innrykk på programmer i C. Kortversjonen vil bli skrevet som følger:
Faktorfunksjon i C | Faktorfunksjon i Python |
---|---|
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 |
Pythonspråkreserverte nøkkelord er gitt i keyword.kwlistmodullisten keyword.
Søkeordene av Python 2.7.5 er: 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.
Fra og med Python 3.0, printog execer ikke lenger språkeord, men modulfunksjoner builtins. Legges til søkeord: True, False, Noneog nonlocal. De tre første var allerede til stede i tidligere versjoner, men de kan ikke lenger redigeres (tidligere oppgave True = 1var mulig). nonlocalble introdusert av PEP 3104, og tillater, i en funksjon definert i en annen funksjon, å endre en variabel med et høyere omfang . Før det var det bare variabler som var lokale for funksjonen og globalt (modulnivå) som kunne endres. Imidlertid var det mulig, og er fremdeles uten nøkkelordet nonlocal, å modifisere et objekt som er tildelt en variabel med et høyere omfang, for eksempel en liste med metoden append- dette er åpenbart umulig for et objekt som ikke kan endres .
Grunnleggende typerDe grunnleggende typene i Python er relativt omfattende og kraftige. Det er blant andre:
Iterable objekter går gjennom forfølgende:
for element in objet_iterable: traiter(element)For en rekke tegn fortsetter gjentakelsen karakter for karakter.
Det er mulig å utlede klasser fra basetyper for å lage dine egne typer. Du kan også lage dine egne typer iterable objekter uten å arve basen iterables ved å bruke språkets iterasjonsprotokoll.
Funksjonell programmeringPython tillater programmering i en funksjonell stil . Den har også listeforståelser , og mer generelt kan forståelser produsere generatorer, ordbøker eller sett . For eksempel, for å bygge listen over kvadrater med naturlige tall mindre enn 10, kan vi bruke uttrykket:
liste = [x**2 for x in range(10)] # liste = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Listen over partall :
liste = [entier for entier in range(10) if entier % 2 == 0] # liste = [0, 2, 4, 6, 8]En oversiktstabell fra bokstavene i alfabetet til deres ASCII- kode :
{chr(n): n for n in range(65, 91)}Bokstavsettet i et ord (produserer settet {'r', 'c', 'd', 'b', 'a'}):
s = "abracadabra" {c for c in s}En forståelse kan bestå av flere sløyfer og filtre, og det er korrespondanse med kode som utfører samme beregning ved hjelp av instruksjoner forog if :
Forståelse | Tilsvarende kode |
---|---|
[ 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) |
En begrenset form for anonym funksjon er mulig:
lambda x: x + 2Lambda-funksjoner kan defineres innebygd og brukes som argumenter i funksjonelle uttrykk:
filter(lambda x: x < 5, une_liste)vil returnere en liste som består av elementene i en_liste mindre enn 5. Samme resultat kan oppnås med
[x for x in une_liste if x < 5]Python lambdas tillater bare uttrykk og kan ikke brukes som generaliserte anonyme funksjoner; men i Python er alle funksjoner objekter, slik at de kan overføres som argumenter til andre funksjoner, og kalles når det er nødvendig. Faktisk kan en funksjon definert med def opprettes i en annen funksjon, og vi får dermed en funksjonsdefinisjon i en lokal variabel, for eksempel:
def filtre_inferieur_a_5(une_liste): def mon_filtre(x): # variable locale mon_filtre return x < 5 return filter(mon_filtre, une_liste)En lokal funksjon kan endre miljøet til funksjonen som opprettet den, takket være nøkkelordet nonlocal(se Shutdown (IT) ):
def accum(pas): total = 0 def ajoute(n): nonlocal total total += n * pas return total return ajouteDet er således mulig å opprette flere akkumulatorer, hver med henvisning til sin egen total. Det er mulig å få tilgang til miljøet til en lokal funksjon ved hjelp av attributtet __closure__.
ObjektprogrammeringAlle basetyper, funksjoner, forekomster av klasser (de "klassiske" objektene til C ++ og Java-språkene ) og klassene selv (som er forekomster av metaklasser) er objekter.
En klasse er definert med nøkkelordet class. De klasser Python støtter multippel arv ; det er ingen statisk overbelastning som i C ++, eller begrensninger på arv som det er tilfelle i Java (en klasse implementerer flere grensesnitt og arver fra en enkelt klasse), men mekanismen for de valgfrie argumentene og etter nøkkelord er mer generell og mer fleksibel . I Python kan et objekts attributt referere til en forekomst eller klassevariabel (oftest en metode). Det er mulig å lese eller endre et attributt dynamisk med funksjonene:
Eksempel på to enkle klasser:
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" Spesielle metoder og definisjon av operatørerPython gir en elegant, objektorientert mekanisme for å definere et forhåndsdefinert sett med operatorer: ethvert Python-objekt kan gis såkalte spesielle metoder.
Disse metodene, som starter og slutter med to understrekninger , kalles når du bruker en operator på objektet: +(metode __add__), +=(metode __iadd__), [](metode __getitem__), ()(metode __call__), etc. Metoder som __repr__og __str__lar deg definere representasjonen av et objekt i den interaktive tolk og gjengivelse med utskriftsfunksjonen .
Mulighetene er mange og er beskrevet i språkdokumentasjonen.
For eksempel kan vi definere tillegg av to todimensjonale vektorer med følgende klasse:
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) GeneratorerNøkkelordet som yieldbrukes i en funksjon gjør det mulig å gjøre denne funksjonen til en generator. Når du kaller denne funksjonen, returneres et objekt av typen generator , som forfor eksempel kan brukes i en sløyfe .
Ved hver samtale utfører generatoren behandlingen til den møter nøkkelordet yield, returnerer verdien av uttrykket yield, og ved neste samtale fortsetter strømmen like etter yield. For eksempel for å beregne Fibonacci-sekvensen kan vi skrive:
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))Modulen itertoolslar deg manipulere generatorene. For eksempel for å trekke ut de 10 første elementene fra forrige generator:
import itertools list(itertools.islice(gen_fibonacci(), 10)) # renvoie [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]Siden Python 3.3 er det mulig å produsere en generator fra en rekursiv funksjon, takket være syntaksen yield from, som dukket opp i PEP 380 og som "delegerer" beregningen til en undergenerator. Følgende eksempel beregner permutasjonene til dronningene som tilsvarer løsningene på problemet med de åtte dronningene som er utvidet til et sjakkbrett med størrelse 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 92En byggherre kan se ut som en funksjon som returnerer en liste, men i motsetning til en liste som inneholder alle elementene, beregner en byggherre elementene en etter en .
Dermed vil testen 36 in [n * n for n in range(10)]utføres på listen fullstendig beregnet, mens i 36 in (n * n for n in range(10)), som bruker en generator, stopper beregningen av kvadratene så snart 36 er funnet. Vi kan overbevise oss selv om dette n * nved å erstatte det med en funksjonsanrop som gir en kanteffekt , for eksempel en skjerm på skjermen.
Takket være en intensiv bruk av ordbøker (assosiativ beholder utviklet med hashtabeller ) gjør Python det mulig å utforske de forskjellige objektene i språket ( introspeksjon ) og i visse tilfeller å endre dem ( forbønn ).
Det å skrive er ikke kontrollert ved kompilering. Python bruker andetyping : Hvis en metode påkalt på et objekt på kjøretid har samme signatur som en metode som er erklært på dette objektet, blir den sistnevnte metoden utført. Derfor vil påkalle en metode som ikke eksisterer på et objekt mislykkes, noe som betyr at det aktuelle objektet ikke er av riktig type. Til tross for mangelen på statisk skriving, er Python sterkt skrevet, og forbyr meningsløse operasjoner (for eksempel å legge til et tall i en streng) i stedet for å stille forsøk på å konvertere det til en meningsfull form. Python gir funksjoner for å transformere variabler til en annen type:
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 gir også en statisk skrive mekanisme for klasse attributter ved hjelp av trekk -API eller refined design mønster .
KommentarerSiden versjon 3.0 tilbyr Python kommentar av variabler i funksjoner (introdusert i PEP 3107). Dette gjør det mulig å gjøre koden mer lesbar uten å fungere som en statisk typeløsning, siden ingenting forplikter seg til å følge disse merknadene.
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 fonctionnelI tillegg, siden versjon 3.5, tilbyr Python skrivemodulen (introdusert i PEP 484).
from typing import List def split_string(string: str) -> List[str]: return string.split(" ") SamlingDet er mulig å utføre en statisk analyse av Python-moduler med verktøy som Pylint, mypy eller PyChecker. Uten å kreve utførelse, vil disse verktøyene oppdage feil eller foreldede konstruksjoner. For eksempel en klasse som arver fra en abstrakt klasse og som ikke omdefinerer abstrakte metoder, eller variabler som brukes før deklareres, eller instansattributter som er erklært utenfor metoden __init__.
Det er også mulig å generere en Python- mellomkode ( bytecode ).
Verktøy som PyInstaller eller andre mer spesifikke som cx_Freeze under Unix , Windows og macOS , py2app under macOS og py2exe under Windows tillater å "kompilere" et Python-program i form av en kjørbar program som består av programmet og en Python-tolk.
Programmet kjører ikke raskere (det er ikke kompilert som maskinkode), men dette forenkler distribusjonen i stor grad, spesielt på maskiner der Python-tolk ikke er installert.
I Python er alt et objekt , i den forstand at en variabel kan inneholde en referanse til alle elementene som håndteres av språket: tall, metoder, moduler, etc. . Men før versjon 2.2, klasser og klasse tilfeller var en spesiell type objekt, som mente at det var for eksempel umulig å utlede din egen underklasse fra listen objekt .
MetoderObjektmodellen til Python er inspirert av Modula-3. Blant disse lånene er plikten til å erklære forekomsten av det nåværende objektet, konvensjonelt navngitt selv , som det første argumentet for metodene, og hver gang vi ønsker å få tilgang til data om denne forekomsten i selve metoden. Denne praksisen er ikke naturlig for programmerere som for eksempel kommer fra C ++ eller Java, og overflod av selv blir ofte kritisert for å være en visuell forurensning som hindrer lesing av koden. Tvert imot mener initiativtakerne til det eksplisitte selvet at det unngår bruk av navngivningskonvensjoner for medlemsdata, og at det forenkler oppgaver som å kalle en superklassemetode eller løse tvetydighet mellom medlemsdata.
Python gjenkjenner tre typer metoder:
Språket har svært begrenset støtte for innkapsling . Det er ingen, som i Java for eksempel, tilgjengelighetsstyring med nøkkelord som protectedeller private.
Pythons filosofi er å konseptuelt skille innkapsling fra skjuling av informasjon. Informasjonsmaskering har som mål å forhindre svindelaktig bruk, det er en bekymring for datasikkerhet . Bastion- modulen til standardbiblioteket, som ikke lenger vedlikeholdes i de nyeste versjonene av språket, gjorde det mulig å kontrollere tilgangen til attributtene til et objekt innenfor rammen av et begrenset utførelsesmiljø.
Innkapsling er et programvareutviklingsproblem. Slagordet til Python-utviklerne er at vi alle samtykker til voksne her . De mener at det er tilstrekkelig å indikere, ved å skrive konvensjoner, de offentlige delene av grensesnittene, og at det er opp til brukerne av objektene å overholde disse konvensjonene eller å ta sitt ansvar. Skikken er å prefiks private medlemmer med en understreking. Språket tillater også bruk av dobbelt understreking for å unngå navnekollisjoner, ved å automatisk prefiksere navnet på dataene til det i klassen der det er definert.
Bruken av funksjonen property()gjør det mulig å definere egenskaper som tar sikte på å fange opp tilgangene til et datamedlem ved hjelp av metoder. Dette gjør det unødvendig å systematisk definere aksessorer og skjule data som vanlig i C ++ for eksempel.
ArvPython støtter flere arv . Siden versjon 2.3, bruker den C3 (en) algoritme , avledet fra Dylan språk , for å løse metoden oppløsning rekkefølge ( MRO ). Tidligere versjoner brukte en dyp traversalgoritme som forårsaket problemer i tilfelle et diamantarvestykke .
Python har et stort standardbibliotek som gir verktøy som passer for mange forskjellige oppgaver. Antall moduler i standardbiblioteket kan økes med spesifikke moduler skrevet i C eller Python.
Standardbiblioteket er spesielt godt designet for å skrive applikasjoner som bruker Internett, med et stort antall standardformater og protokoller som støttes (som MIME og HTTP ). Moduler for å lage grafiske grensesnitt og manipulere regulære uttrykk er også gitt. Python inkluderer også et rammeverk for enhetstesting ( unittesttidligere PyUnit før versjon 2.1) for å lage suiter med omfattende tester.
Selv om hver programmerer kan vedta sine egne konvensjoner for å skrive Python-kode, har Guido van Rossum gjort en guide tilgjengelig, referert til som "PEP 8". Publisert i 2001 opprettholdes det fortsatt for å tilpasse det til språkendringer. Google tilbyr også en guide.
Python har flere moduler tilgjengelig for å lage programvare med et grafisk grensesnitt . Den vanligste er Tkinter . Denne modulen er egnet for mange applikasjoner og kan betraktes som tilstrekkelig i de fleste tilfeller. Imidlertid er andre moduler opprettet for å kunne koble Python til andre programvarebiblioteker (" toolkit "), for flere funksjoner, for bedre integrering med operativsystemet som brukes, eller rett og slett for å kunne bruke Python med favorittbiblioteket. Noen programmerere synes at bruken av Tkinter er mer smertefull enn andre biblioteker. Disse andre modulene er ikke en del av standardbiblioteket og må derfor skaffes separat.
Hovedmodulene som gir tilgang til GUI-bibliotekene er Tkinter og Pmw (Python megawidgets) for Tk , wxPython for wxWidgets , PyGTK for GTK + , PyQt og PySide for Qt , og til slutt FxPy for FOX Toolkit . Det er også en tilpasning av SDL- biblioteket : Pygame , en binding av SFML : PySFML, samt et bibliotek skrevet spesielt for Python: Pyglet (en) .
Det er også mulig å opprette Silverlight- applikasjoner i Python på IronPython- plattformen .
Guido van Rossum er hovedforfatter av Python, og hans rolle som den permanente sentrale beslutningstaker av Python er humoristisk anerkjent av tittelen " Benevolent Dictator for Life " ( BDFL). Sidenjuli 2018, Erklærte Guido van Rossum seg på permanent ferie fra rollen som BDFL. Han avlyste også kandidaturet til det regisserende språkrådet inovember 2019.
Han blir assistert av et team av kjerneutviklere som har skrivetilgang til CPython-depotet og koordinerer på python-dev-postlisten. De jobber hovedsakelig med det grunnleggende språket og biblioteket. Noen ganger mottar de bidrag fra andre Python-utviklere via Roundup bug management-plattformen , som erstattet SourceForge .
Brukere eller utviklere av tredjepartsbiblioteker bruker en rekke andre ressurser. De viktigste generalistmediene rundt Python er det engelsktalende Usenet-forumet comp.lang.python.
Allusjoner til Monty Python er ganske vanlige. Python-opplæringsprogrammer bruker ofte ordene spam og egg som en metasyntaksvariabel . Dette er en referanse til den Monty Python Spam skisse , der to individer forsøke å bestille et måltid ved hjelp av et kort som har spam merkevare hermetisert skinke i nesten hver tallerken. Denne skissen ble også tatt som referanse for å betegne uønsket e-post .
Flere selskaper eller organisasjoner nevner på deres offisielle nettside at de bruker Python:
Python er også kommandospråket for et stort antall gratis programvare:
Og kommersielt:
Python brukes som programmeringsspråk i videregående og høyere utdanning, spesielt i Frankrike. Siden 2013 har det blitt undervist der, samtidig som Scilab , til alle studenter i forberedende naturfagskurs som en del av den felles kjernen (informatikk for alle). Tidligere var informatikkutdanning begrenset til ett alternativ i MP, med instruksjon på caml- eller pascal- språk . Dette alternativet eksisterer fortsatt, men Pascal ble forlatt fra 2015-sesjonen til konkurransene, så bare Caml er igjen i denne undervisningen. De første konkurransetestene på Python-språket er også de i 2015-sesjonen.
I tillegg til referanseversjonen, kalt CPython (fordi den er skrevet på C- språk ), er det andre systemer som implementerer Python-språket:
Disse andre versjonene drar ikke nødvendigvis fordel av hele biblioteket med funksjoner skrevet i C for referanseversjonen, og heller ikke fra de siste språkutviklingene.
Ulike distribusjoner er tilgjengelige, som noen ganger inkluderer mange pakker dedikert til et gitt domene:
Dette er ingen forskjellige implementeringer av Python-språket: de er basert på CPython, men kommer med et antall forhåndsinstallerte biblioteker.
Versjon | Utgivelsesdato | Avslutningen på støtten | Nyankomne |
---|---|---|---|
1,5 (0,2) | 3. januar 1998 | 13. april 1999 |
|
1.6 | 5. september 2000 | September 2000 |
|
2.0 | 16. oktober 2000 | 22. juni 2001 |
|
2.1 | 15. april 2001 | 9. april 2002 |
|
2.2 | 21. desember 2001 | 30. mai 2003 |
|
2.3 | 29. juni 2003 | 11. mars 2008 | |
2.4 | 30. november 2004 | 19. desember 2008 |
|
2.5 | 19. september 2006 | 26. mai 2011 |
|
2.6 | 1 st oktober 2 008 | 24. august 2010 (sikkerhetsoppdateringer til 29. oktober 2013) |
|
2.7 | 3. juli 2010 | 1 st januar 2020 |
|
3.0 | 3. desember 2008 | 13. februar 2009 |
Se PEP 3100 for detaljer |
3.1 | 27. juni 2009 | 12. juni 2011 (sikkerhetsoppdateringer til Juni 2012) |
|
3.2 | 20. februar 2011 | 13. mai 2013 (sikkerhetsoppdateringer til 20. februar 2016) |
|
3.3 | 29. september 2012 | 8. mars 2014 (sikkerhetsoppdateringer til 29. september 2017) |
|
3.4 | 16. mars 2014 | 9. august 2017 (sikkerhetsoppdateringer til 18. mars 2019) |
|
3.5 | 13. september 2015 | 8. august 2017 (sikkerhetsoppdateringer til 13. september 2020) |
|
3.6 | 23. desember 2016 | 24. desember 2018 (sikkerhetsoppdateringer til desember 2021) |
|
3.7 | 31. januar 2018 | 27. juni 2020 (sikkerhetsoppdateringer til Juni 2023) |
|
3.8 | 14. oktober 2019 | April 2021 (sikkerhetsoppdateringer til Oktober 2024) |
|
3.9 | 5. oktober 2020 | Mai 2022 (sikkerhetsoppdateringer til Oktober 2025) |
|
Python Enhancement Proposals (eller PEP: Python Enhancement Proposal ) er tekstdokumenter som er ment å være veien til å forbedre Python og gå foran alle endringene. Et PEP er et utviklingsorienteringsforslag (PEP-prosess) , et teknisk forslag (Standard Track PEP) eller en enkel anbefaling ( Informational PEP ). Den mest kjente PEP er PEP 8 for sin kodestilguide.
I 2009 er det versjon 3 av Python, som i økende grad erstatter versjon 2 (prosjektet ble opprinnelig kalt "Python 3000" eller "Py3K"), uten bakoverkompatibilitet med serien versjoner 2.x, for å eliminere svakhetene i språket. Retningslinjen for prosjektet var å "redusere Python-overflødighet ved å fjerne foreldede metoder". Python 3.0a1, den første alfaversjonen, ble gitt ut den31. august 2007, og det er en PEP som beskriver de planlagte endringene, samt en side for å veilede programmerere i deres valg av Python 2 eller 3.
Kalkulatorer beregnet på elever på videregående skole (inkludert Casio , NumWorks , Texas Instruments ...) og støtte for Python-arbeid i Python 3. Disse kalkulatorene kan utveksle programmer med personlige datamaskiner .
FilosofiPython 3 ble utviklet med samme filosofi som i sine tidligere versjoner, så enhver henvisning til Pythons filosofi vil også gjelde for versjon 3. Språket hadde imidlertid endt opp med å samle en rekke overflødige metoder. I forsøk på å fjerne overflødighet i språket og dets moduler, følger Python 3 Python-retningslinjen "Det bør bare være en metode som er både optimal og naturlig for alt".
Python 3 er fortsatt et språk med flere paradigmer. Programmører vil fortsatt ha valget mellom objektorientering, strukturert programmering, funksjonell programmering og andre paradigmer; Python 3 er ment å brukes mer naturlig enn i 2.x-versjoner, selv om det printkrever bruk av parenteser i motsetning til Python 2.
Planlegging og kompatibilitetPython 3.0a1, den første alfaversjonen av Python 3.0, ble gitt ut den 31. august 2007. 2.x og 3.x-versjonene av Python vil bli gitt ut parallelt i flere utviklingssykluser, hvor 2.x-serien primært vil forbli for kompatibilitet, inkludert noen funksjoner importert fra Python 3.x. PEP 3000 inneholder mer informasjon om utgivelsesprosessen til en versjon.
Som Perl 6 bryter Python 3.0 bakoverkompatibilitet (bakoverkompatibilitet). Bruk av kode skrevet for 2.x-serien garanteres ikke med Python 3.0. Sistnevnte bringer grunnleggende endringer, slik som fullstendig bytte til Unicode og av denne grunn et nødvendig skille mellom strenger og "byte" -objekter. Den dynamiske skrivingen assosiert med visse metoder på ordbokslignende objekter gjør en sømløs overgang fra Python 2.x til Python 3.0 veldig vanskelig. Et verktøy kalt "2to3" oversetter mesteparten av 2.x-versjoner til 3.x-versjoner og indikerer kodeområder som krever etterbehandling med spesielle kommentarer og advarsler. I sin pre-release ser 2to3 ut til å lykkes ærlig med å oppnå en korrekt oversettelse. Som en del av en migrering fra Python 2.x til Python 3.x, anbefaler PEP 3000 å beholde den opprinnelige koden som grunnlag for endringer og å oversette den til 3.x-plattformen ved hjelp av 2to3.
Python 2.6 gir en start for bakoverkompatibilitet, samt en "forsiktighetsmodus" som skal øke bevisstheten om potensielle overgangsproblemer for byttet til Python 3.
Det finnes versjoner av Python som passer for Android og iPhone i versjon 2.5 eller 2.6. Tilgjengelig i iOS Jailbreak på iOS takket være "oppsettverktøy", og på Android takket være SL4A som til og med gir muligheten for å lage små grafiske grensesnitt takket være "android" -modulen og som gjør det mulig å sende SMS , slå på kameraet, eller å vibrere telefonen. De neste linjene viser hvordan du gjør dette:
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 secondesEn havn av Python på Blackberry- terminaler ble utgitt iJuni 2012, for BlackBerry OS 10. Systemet . En lettere versjon ble utgitt iseptember 2012, kalt "BlackBerry-Tart", på grunn av ordspill på engelsk: " a" tart "er lettere enn en" pie " ", med referanse til den tradisjonelle " apple pie ". Den er basert på Python 3.2.2.