Python | ||
Dato for første version | 20. februar 1991 | |
---|---|---|
Paradigmer | Formål , bydende nødvendigt og funktionelt | |
Forfatter | Guido van Rossum | |
Udviklere | Python Software Foundation | |
Sidste version | 3.9.6 (28. juni 2021) | |
Udviklingsversion | 3.10.0b4 (10. juli 2021) | |
Indtastning | Stærk , dynamisk , andeandskrivning | |
Påvirket af | ABC , C , Eiffel , ICON , Modula-3 , Java , Perl , Smalltalk , Tcl | |
Påvirket | Ruby , Groovy , Boo , Julia | |
Implementeringer | CPython , Jython , IronPython , PyPy | |
Skrevet i | C til CPython, Java til Jython, C # til IronPython og i Python selv til PyPy | |
Operativ system | Multiplatform | |
Licens |
Gratis licens : Python Software Foundation-licens |
|
Internet side | www.python.org | |
Filudvidelse | py, pyc, pyd, pyo, pyw, pyz og pyi | |
Python (udtalt / p i . T ɔ / ) er et programmeringssprog fortolket , multi- paradigme og på tværs af platforme . Det fremmer struktureret , funktionel og objektorienteret imperativ programmering . Det har en stærk dynamisk typning , automatisk hukommelse ledelse af garbage collection og en undtagelse management system ; det ligner således Perl , Ruby , Scheme , Smalltalk og Tcl .
Python-sproget er placeret under en gratis licens tæt på BSD-licensen og fungerer på de fleste computerplatforme , fra smartphones til mainframe-computere , fra Windows til Unix med især GNU / Linux via macOS eller endda Android , iOS og kan også være oversat til Java eller .NET . Det er designet til at optimere programmørernes produktivitet ved at tilbyde værktøjer på højt niveau og en brugervenlig syntaks .
Det værdsættes også af nogle pædagoger, der finder et sprog, hvor syntaksen, klart adskilt fra mekanismerne på lavt niveau , muliggør en let igangsættelse af de grundlæggende begreber ved programmering.
Python er et programmeringssprog, der kan bruges i mange sammenhænge og tilpasse sig enhver form for brug takket være specialiserede biblioteker . Det bruges dog især som et skriptsprog til at automatisere enkle, men kedelige opgaver, såsom et script, der ville hente vejret fra Internettet, eller som ville integreres i computerstøttet designsoftware for at automatisere visse sekvenser af gentagne handlinger (se afsnittet Adoption ). Det bruges også som et prototype-udviklingssprog, når der er behov for en funktionel applikation, inden den optimeres med et sprog på et lavere niveau. Det er især udbredt i den videnskabelige verden og har mange biblioteker optimeret til numerisk beregning .
I slutningen af 1980'erne var programmør Guido van Rossum involveret i udviklingen af ABC- programmeringssproget på Centrum voor Wiskunde en Informatica (CWI) i Amsterdam , Holland . Han arbejdede derefter i Amoeba- operativsystemteamet , hvis systemopkald var vanskelige at grænseflade med Bourne-skallen, der blev brugt som brugergrænseflade . Han mener derefter, at et script-sprog inspireret af ABC kunne være interessant som kommandotolk for Amoeba.
I 1989 udnyttede han en uges ferie i juleferien og brugte sin personlige computer til at skrive den første version af sproget. Fan af tv-serien Monty Python's Flying Circus , han beslutter at døbe dette projekt Python. Han blev primært inspireret af ABC, for eksempel til indrykning som syntaks eller typer på højt niveau, men også fra Modula-3 til undtagelseshåndtering , C-sprog og UNIX-værktøjer .
I løbet af det følgende år begyndte sproget at blive vedtaget af Amoeba-projektteamet, hvor Guido fortsatte med at udvikle sig primært i sin fritid. IFebruar 1991, den første offentlige version, nummereret 0.9.0, er offentliggjort på Usenet alt.sources forum . Den seneste version udgivet på CWI er Python 1.2.
I 1995 fortsatte Van Rossum sit arbejde med Python på CNRI (i) i Reston , USA , hvor han udgav flere versioner af softwaren.
Fra'August 1995, Python-teamet arbejder på NCRI på Grail en webbrowser ved hjælp af Tk . Det er Python-ækvivalenten til HotJava- browseren , der giver dig mulighed for at køre applets i et sikkert miljø. Den første offentlige version, der var tilgængelig i november, er 0,2. Det driver udviklingen af moduler til standardbiblioteket som rexec , htmllib eller urllib . Version 0.6 vil være den sidste fra Grail ; det er offentliggjort iApril 1999.
I 1999 blev projektet Computer Programming for Everybody (CP4E) lanceret i fællesskab mellem CNRI og DARPA . Det handler om at bruge Python som et programmeringssprog undervisning sprog . Dette initiativ vil føre til oprettelsen af IDLE- udviklingsmiljøet . På grund af DARPA's manglende finansiering til projektet og mange Python-udvikleres afgang fra NCRI (inklusive Guido van Rossum) døde projektet i 2000. Python 1.6 var den sidste version, der blev frigivet på NCRI.
I 2000 flyttede det centrale Python-udviklingsteam til BeOpen.com for at danne BeOpen PythonLabs- teamet . Python 2.0 er den eneste version, der er frigivet på BeOpen.com. Efter denne udgivelse sluttede Guido Van Rossum og de andre PythonLabs-udviklere sig til Digital Creations (nu kendt som Zope Corporation ).
Andrew M. Kuchling offentliggør i December 1999en tekst kaldet Python Warts , der syntetiserer de hyppigste klager udtrykt mod sproget. Dette dokument vil have en bestemt indflydelse på sprogets fremtidige udvikling.
Python 2.1 er en afledt version af Python 1.6.1 og Python 2.0. Dens licens er omdøbt til Python Software Foundation License . Enhver kode , dokumentation og specifikation tilføjet siden frigivelsen af Python 2.1 alpha ejes af Python Software Foundation (PSF), en nonprofit grundlagt i 2001, modelleret efter Apache Software Foundation .
For at løse nogle sprogfejl (f.eks. Objektorienteret med to typer klasser ) og rydde standardbiblioteket for dets forældede og overflødige elementer valgte Python at bryde bagudkompatibilitet i den nye større version, Python 3.0, offentliggjort idecember 2008. Denne version efterfølges hurtigt af en version 3.1, der korrigerer de tidlige fejl i version 3.0.
Python blev designet til at være et læsbart sprog. Det sigter mod at være visuelt ren. For eksempel har den færre syntaktiske konstruktioner end mange strukturerede sprog som C , Perl eller Pascal . Kommentarer er angivet med krydstegnet (#).
De blokke identificeres ved indrykning i stedet for seler som C eller C ++ ; eller begin ... endsom i Pascal eller Ruby . Forøgelse af indrykket markerer starten på en blok og reducerer indrykket markerer slutningen af den aktuelle blok. Efter konvention (i øjeblikket PEP8) er indrykket normalt fire mellemrum i Python.
Faktorisk funktion i C | Faktorisk funktion 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) |
Bemærk: Indrykket kunne ændres eller fjernes i C-versionen uden at ændre dets adfærd. På samme måde kan Python-funktionen skrives med et betinget udtryk. Korrekt indrykning gør det dog lettere at opdage fejl, når flere blokke er indlejrede, og letter derfor eliminering af disse fejl. Derfor er det at foretrække at indrykke programmer i C. Den korte version ville blive skrevet som følger:
Faktorisk funktion i C | Faktorisk funktion 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 |
Python-sprog reserverede nøgleord findes i keyword.kwlistmodullisten keyword.
Nøgleordene i 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 længere sprognøgleord, men modulfunktioner builtins. Føjes til nøgleord: True, False, Noneog nonlocal. De første tre var allerede til stede i tidligere versioner, men de kan ikke længere redigeres (tidligere opgave True = 1var mulig). nonlocalblev introduceret af PEP 3104 og tillader i en funktion, der er defineret i en anden funktion, at ændre en variabel med et højere omfang . Før det var kun variabler, der var lokale for funktionen og globalt (modulniveau), der kunne ændres. Det var imidlertid muligt, og er stadig uden nøgleordet nonlocal, at ændre et objekt, der er tildelt en variabel med et højere omfang, for eksempel en liste med metoden append- dette er naturligvis umuligt for et objekt, der ikke kan ændres .
Grundlæggende typerDe grundlæggende typer i Python er relativt omfattende og kraftfulde. Der er blandt andre:
Iterable objekter gennemløbes forsom følger:
for element in objet_iterable: traiter(element)For en række tegn fortsætter iteration karakter for karakter.
Det er muligt at udlede klasser fra basetyper for at oprette dine egne typer. Du kan også lave dine egne typer iterable objekter uden at arve de grundlæggende iterables ved hjælp af sprogets iterationsprotokol.
Funktionel programmeringPython tillader programmering i en funktionel stil . Det har også listeforståelser , og mere generelt kan forståelser producere generatorer, ordbøger eller sæt . For eksempel kan vi bruge udtrykket for at oprette listen over kvadrater med naturlige tal mindre end 10:
liste = [x**2 for x in range(10)] # liste = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Listen over lige tal :
liste = [entier for entier in range(10) if entier % 2 == 0] # liste = [0, 2, 4, 6, 8]En overgangstabel fra bogstaverne i alfabetet til deres ASCII- kode :
{chr(n): n for n in range(65, 91)}Sættet af bogstaver i et ord (producerer sættet {'r', 'c', 'd', 'b', 'a'}):
s = "abracadabra" {c for c in s}En forståelse kan bestå af flere sløjfer og filtre, og der er en korrespondance med kode, der udfører den samme beregning ved hjælp af instruktioner forog if :
Forståelse | Ækvivalent 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 begrænset form for anonym funktion er mulig:
lambda x: x + 2Lambda-funktioner kan defineres inline og bruges som argumenter i funktionelle udtryk:
filter(lambda x: x < 5, une_liste)returnerer en liste bestående af elementerne i en_liste mindre end 5. Det samme resultat kan opnås med
[x for x in une_liste if x < 5]Python lambdas tillader kun udtryk og kan ikke bruges som generaliserede anonyme funktioner; men i Python er alle funktioner objekter, så de kan overføres som argumenter til andre funktioner og kaldes, når det er nødvendigt. Faktisk kan en funktion defineret med def oprettes inde i en anden funktion, og vi opnår således en funktionsdefinition 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 funktion kan ændre miljøet for den funktion, der oprettede den, takket være nøgleordet nonlocal(se Lukning (IT) ):
def accum(pas): total = 0 def ajoute(n): nonlocal total total += n * pas return total return ajouteDet er således muligt at oprette flere akkumulatorer, der hver henviser til deres egen total. Det er muligt at få adgang til miljøet for en lokal funktion ved hjælp af attributten __closure__.
ObjektprogrammeringAlle basetyper, funktioner, forekomster af klasser (de "klassiske" objekter på C ++ og Java-sprogene ) og selve klasserne (som er forekomster af metaklasser) er objekter.
En klasse defineres med nøgleordet class. De klasser Python understøtter multipel nedarvning ; der er ingen statisk overbelastning som i C ++ eller begrænsninger for arv, som det er tilfældet i Java (en klasse implementerer flere grænseflader og arver fra en enkelt klasse), men mekanismen for de valgfri argumenter og efter nøgleord er mere generel og mere fleksibel . I Python kan et objekts attribut henvise til en forekomst eller klassevariabel (oftest en metode). Det er muligt at læse eller ændre en attribut dynamisk med funktionerne:
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" Særlige metoder og definition af operatørerPython giver en elegant, objektorienteret mekanisme til at definere et foruddefineret sæt operatører: ethvert Python-objekt kan gives såkaldte specielle metoder.
Disse metoder, der starter og slutter med to understregninger , kaldes, når du bruger en operator på objektet: +(metode __add__), +=(metode __iadd__), [](metode __getitem__), ()(metode __call__) osv. Metoder som __repr__og __str__giver dig mulighed for at definere repræsentationen af et objekt i den interaktive tolk og dets gengivelse med udskrivningsfunktionen .
Mulighederne er mange og er beskrevet i sprogdokumentationen.
For eksempel kan vi definere tilføjelsen af to to-dimensionelle 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øgleordet, der yieldbruges i en funktion, gør det muligt at gøre denne funktion til en generator. Når du kalder denne funktion, returneres et objekt af typen generator , som f.eks. Kan bruges i en sløjfe for.
Ved hvert opkald udfører generatoren sin behandling, indtil den møder nøgleordet yield, returnerer udtrykets værdi yieldog genoptager sit flow lige efter det næste opkald yield. For eksempel for at 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))Modulet itertoolsgiver dig mulighed for at manipulere generatorerne. For eksempel at udtrække de første 10 elementer fra den 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 muligt at producere en generator fra en rekursiv funktion takket være syntaksen yield from, som dukkede op i PEP 380, og som "delegerer" beregningen til en undergenerator. Det følgende eksempel beregner permutationerne for dronningerne svarende til løsningerne på problemet med de otte dronninger udvidet til et skakbræt i 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 bygherre ser muligvis ud som en funktion, der returnerer en liste, men i modsætning til en liste, der indeholder alle dens elementer, beregner en bygherre sine elementer en efter en .
Testen 36 in [n * n for n in range(10)]udføres således på listen beregnet fuldt ud, mens i 36 in (n * n for n in range(10)), der bruger en generator, stopper beregningen af firkanterne, så snart 36 er fundet. Vi kan overbevise os selv om dette n * nved at erstatte det med et funktionsopkald, der giver en kanteffekt , for eksempel en skærm på skærmen.
Takket være en intensiv brug af ordbøger (associativ beholder udviklet med hash-tabeller ) gør Python det muligt at udforske de forskellige objekter i sproget ( introspektion ) og i visse tilfælde at ændre dem ( forbøn ).
Den maskinskrivning ikke er markeret ved kompilering. Python bruger andeattypning : Hvis en metode, der påberåbes på et objekt, har samme signatur som en metode, der er angivet på dette objekt, køres den sidstnævnte metode. Derfor kan en påkaldelse af en metode, der ikke findes på et objekt, mislykkes, hvilket betyder, at det pågældende objekt ikke er af den rigtige type. På trods af manglen på statisk typning er Python stærkt skrevet, hvilket forbyder meningsløse operationer (for eksempel at føje et nummer til en streng) i stedet for lydløst at forsøge at konvertere det til en meningsfuld form. Python giver funktioner til at omdanne variabler til en anden 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 giver også en statisk typemekanisme til klasseattributter ved hjælp af træk API eller dekoratørens designmønster .
KommentarerSiden version 3.0 tilbyder Python annotering af variabler i funktioner (introduceret i PEP 3107). Dette gør det muligt at gøre koden mere læsbar uden at fungere som en statisk typeløsning, da intet forpligter sig til at følge disse kommentarer.
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 fonctionnelDerudover tilbyder Python siden version 3.5 typemodulet (introduceret i PEP 484).
from typing import List def split_string(string: str) -> List[str]: return string.split(" ") SamlingDet er muligt at udføre en statisk analyse af Python-moduler med værktøjer som Pylint, mypy eller PyChecker. Uden at kræve udførelse finder disse værktøjer fejl eller forældede konstruktioner. For eksempel en klasse, der arver fra en abstrakt klasse, og som ikke omdefinerer abstrakte metoder eller variabler, der er brugt før deklareres, eller instansattributter, der er erklæret uden for metoden __init__.
Det er også muligt at generere en Python- mellemkode ( bytecode ).
Værktøjer som PyInstaller eller andre mere specifikke som cx_Freeze under Unix , Windows og macOS , py2app under macOS og py2exe under Windows gør det muligt at "kompilere" et Python-program i form af en eksekverbar bestand, der omfatter programmet og en Python-tolk.
Programmet kører ikke hurtigere (det kompileres ikke som maskinkode), men dette forenkler distributionen meget, især på maskiner, hvor Python-tolk ikke er installeret.
I Python er alt et objekt i den forstand, at en variabel kan indeholde en henvisning til alle de elementer, der håndteres af sproget: tal, metoder, moduler osv. . Men før version 2.2, klasser og klasse forekomster var, en speciel type objekt, hvilket betød, at det var for eksempel umuligt at udlede din egen underklasse fra listen objekt .
MetoderObjektmodellen til Python er inspireret af Modula-3. Blandt disse lån er forpligtelsen til at erklære forekomsten af det aktuelle objekt, konventionelt navngivet selv , som metodens første argument, og hver gang vi ønsker at få adgang til data om denne forekomst i selve metoden. Denne praksis er ikke naturlig for programmører, der f.eks. Kommer fra C ++ eller Java, hvor overflod af selv bliver ofte kritiseret for at være en visuel forurening, der hindrer læsning af koden. Tværtimod mener promotorerne af det eksplicitte selv , at det undgår brugen af navngivningskonventioner til medlemsdata, og at det forenkler opgaver såsom at kalde en superklassemetode eller løse tvetydighed mellem medlemsdata.
Python genkender tre typer metoder:
Sproget har meget begrænset understøttelse af indkapsling . Der er ingen, som i Java for eksempel, tilgængelighedskontrol ved hjælp af nøgleord som protectedeller private.
Pythons filosofi er at konceptuelt differentiere indkapsling fra skjult information. Informationsmaskering har til formål at forhindre svigagtig brug, det er en bekymring for computersikkerhed . Den bastion modul af standard bibliotek, som vedligeholdes ikke længere i de nyeste versioner af sproget, og dermed gjort det muligt at kontrollere adgangen til de attributter af et objekt inden for rammerne af et begrænset henrettelse miljø.
Indkapsling er et problem med softwareudvikling. Sloganet for Python-udviklerne er, at vi alle samtykker til voksne her . De mener, at det er tilstrækkeligt ved at skrive konventioner de offentlige dele af grænsefladerne, og at det er op til brugerne af objekterne at overholde disse konventioner eller tage deres ansvar. Skikken er at sætte en understreger foran private medlemmer. Sproget tillader også brugen af dobbelt understregning for at undgå navnekollisioner ved automatisk at prefikse navnet på dataene med det i den klasse, hvor de er defineret.
Brugen af funktionen property()gør det muligt at definere egenskaber, der sigter mod at opfange adgangene til et datamedlem ved hjælp af metoder. Dette gør det unødvendigt at systematisk definere accessorer og skjule data som det er almindeligt i f.eks. C ++.
ArvPython understøtter flere arv . Siden version 2.3 bruger den C3 (en) -algoritmen , der stammer fra Dylan- sproget , til at løse metodeopløsningsrækkefølgen ( MRO ). Tidligere versioner brugte en dyb traversalgoritme, der forårsagede problemer i tilfælde af et diamantarvestykke .
Python har et stort standardbibliotek , der leverer værktøjer, der passer til mange forskellige opgaver. Antallet af moduler i standardbiblioteket kan øges med specifikke moduler skrevet i C eller Python.
Standardbiblioteket er særligt godt designet til at skrive applikationer, der bruger Internettet, med et stort antal standardformater og protokoller understøttet (såsom MIME og HTTP ). Der findes også moduler til oprettelse af grafiske grænseflader og manipulering af regulære udtryk . Python inkluderer også en ramme for enhedstest ( unittesttidligere PyUnit før version 2.1) for at skabe suiter med omfattende tests.
Selvom hver programmør kan vedtage deres egne konventioner til skrivning af Python-kode, har Guido van Rossum gjort en guide tilgængelig, kaldet "PEP 8". Udgivet i 2001 vedligeholdes det stadig for at tilpasse det til ændringer i sproget. Google tilbyder også en guide.
Python har flere moduler til rådighed til oprettelse af software med en grafisk grænseflade . Den mest almindelige er Tkinter . Dette modul er velegnet til mange applikationer og kan betragtes som tilstrækkeligt i de fleste tilfælde. Imidlertid er der oprettet andre moduler for at være i stand til at linke Python til andre softwarebiblioteker (" værktøjssæt ") for at få flere funktioner, for bedre integration med det anvendte operativsystem eller bare for at kunne bruge Python med sit foretrukne bibliotek. Faktisk finder nogle programmører brugen af Tkinter mere smertefuld end andre biblioteker. Disse andre moduler er ikke en del af standardbiblioteket og skal derfor fås separat.
De vigtigste moduler, der giver adgang til GUI-bibliotekerne, er Tkinter og Pmw (Python megawidgets) til Tk , wxPython til wxWidgets , PyGTK til GTK + , PyQt og PySide til Qt og endelig FxPy til FOX Toolkit . Der er også en tilpasning af SDL- biblioteket : Pygame , en binding af SFML : PySFML samt et bibliotek skrevet specielt til Python: Pyglet (en) .
Det er også muligt at oprette Silverlight- applikationer i Python på IronPython- platformen .
Guido van Rossum er hovedforfatter af Python, og hans rolle som Pythons permanente centrale beslutningstager anerkendes humoristisk med titlen " Benevolent Dictator for Life " ( BDFL). Sidenjuli 2018, Guido van Rossum erklærede sig på permanent ferie fra sin rolle som BDFL. Han aflyste også sit kandidatur til det instruktive sprogråd inovember 2019.
Han bistås af et team af kerneudviklere, der har skriveadgang til CPython-arkivet og koordinerer på python-dev-postlisten. De arbejder hovedsageligt på det grundlæggende sprog og bibliotek. De modtager lejlighedsvis bidrag fra andre Python-udviklere via Roundup bug management platform , der erstattede SourceForge .
Brugere eller udviklere af tredjepartsbiblioteker bruger en række andre ressourcer. De vigtigste generalmedier omkring Python er det engelsktalende Usenet forum comp.lang.python.
Hentninger til Monty Python er ret almindelige. Python-tutorials bruger ofte ordene spam og æg som en metasyntaksvariabel . Dette er en henvisning til den Monty Python Spam skitse , hvor to lånere forsøger at bestille et måltid ved hjælp af et kort, der har SPAM mærke dåse skinke i næsten alle skålen. Denne skitse blev også taget som reference for at betegne uopfordret e-mail .
Flere virksomheder eller organisationer nævner på deres officielle hjemmeside, at de bruger Python:
Python er også kommandosproget til et stort antal gratis software:
Og kommercielt:
Python bruges som programmeringssprog i sekundær og videregående uddannelse, især i Frankrig. Siden 2013 er det blevet undervist der, på samme tid som Scilab , til alle studerende i forberedende videnskabsklasser som en del af den fælles kerne (datalogi for alle). Tidligere var uddannelse i datalogi begrænset til en mulighed i MP, hvor instruktion var på caml eller pascal sprog . Denne mulighed eksisterer stadig, men Pascal blev opgivet fra konkurrencen i 2015, så kun Caml er tilbage i denne undervisning. De første konkurrencetest på Python-sproget er også dem i 2015-sessionen.
Udover referenceversionen, der hedder CPython (fordi den er skrevet på C- sprog ), er der andre systemer, der implementerer Python-sproget:
Disse andre versioner drager ikke nødvendigvis fordel af hele biblioteket med funktioner, der er skrevet i C til referenceversionen, eller fra de seneste sprogudviklinger.
Forskellige distributioner er tilgængelige, som undertiden inkluderer mange pakker dedikeret til et givet domæne:
Disse er ikke forskellige implementeringer af Python-sproget: de er baseret på CPython, men leveres med et antal forudinstallerede biblioteker.
Version | Udgivelses dato | Slut på support | Nyankomne |
---|---|---|---|
1,5 (.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. december 2001 | 30. maj 2003 |
|
2.3 | 29. juni 2003 | 11. marts 2008 | |
2.4 | 30. november 2004 | 19. december 2008 |
|
2.5 | 19. september 2006 | 26. maj 2011 |
|
2.6 | 1 st oktober 2008 | 24. august 2010 (sikkerhedsopdateringer indtil 29. oktober 2013) |
|
2.7 | 3. juli 2010 | 1 st januar 2020- |
|
3.0 | 3. december 2008 | 13. februar 2009 |
Se PEP 3100 for detaljer |
3.1 | 27. juni 2009 | 12. juni 2011 (sikkerhedsopdateringer indtil Juni 2012) |
|
3.2 | 20. februar 2011 | 13. maj 2013 (sikkerhedsopdateringer indtil 20. februar 2016) |
|
3.3 | 29. september 2012 | 8. marts 2014 (sikkerhedsopdateringer indtil 29. september 2017) |
|
3.4 | 16. marts 2014 | 9. august 2017 (sikkerhedsopdateringer indtil 18. marts, 2019) |
|
3.5 | 13. september 2015 | 8. august 2017 (sikkerhedsopdateringer indtil 13. september 2020) |
|
3.6 | 23. december 2016 | 24. december 2018 (sikkerhedsopdateringer indtil december 2021) |
|
3.7 | 31. januar 2018 | 27. juni 2020 (sikkerhedsopdateringer indtil Juni 2023) |
|
3.8 | 14. oktober 2019 | April 2021 (sikkerhedsopdateringer indtil Oktober 2024) |
|
3.9 | 5. oktober 2020 | Maj 2022 (sikkerhedsopdateringer indtil Oktober 2025) |
|
Python Enhancement Proposals (eller PEP: Python Enhancement Proposal ) er tekstdokumenter beregnet til at være vejen til forbedring af Python og forud for alle dens ændringer. Et PEP er et udviklingsorienteret forslag (PEP-proces) , et teknisk forslag (Standard Track PEP) eller en simpel anbefaling ( Informativ PEP ). Den mest kendte PEP er PEP 8 for sin kodestilguide.
I 2009 er det version 3 af Python, som i stigende grad erstatter version 2 (projektet blev oprindeligt kaldt "Python 3000" eller "Py3K") uden bagudkompatibilitet med serien af version 2.x for at eliminere svaghederne ved sproget. Retningslinjen for projektet var at "reducere Python-redundans ved at fjerne forældede metoder". Python 3.0a1, den første alfa-version, blev udgivet den31. august 2007, og der er en PEP, der beskriver de planlagte ændringer, samt en side til vejledning af programmører i deres valg af Python 2 eller 3.
Regnemaskiner beregnet til gymnasieelever (inklusive Casio , NumWorks , Texas Instruments ...) og understøtter Python-arbejde i Python 3. Disse regnemaskiner kan udveksle programmer med pc'er .
FilosofiPython 3 blev udviklet med den samme filosofi som i de tidligere versioner, så enhver henvisning til Pythons filosofi ville også gælde for version 3. Imidlertid havde sproget ender med et antal overflødige metoder. I forsøget på at fjerne redundans i sproget og dets moduler følger Python 3 Python-retningslinjen “Der skal kun være en metode, der er både optimal og naturlig for alt”.
Python 3 er fortsat et multi-paradigmesprog. Programmører har stadig valget mellem objektorientering, struktureret programmering, funktionel programmering og andre paradigmer; Python 3 er beregnet til at blive brugt mere naturligt end i 2.x versioner, selvom det printkræver brug af parenteser i modsætning til Python 2.
Planlægning og kompatibilitetPython 3.0a1, den første alfa-version af Python 3.0, blev udgivet den 31. august 2007. 2.x og 3.x-versionerne af Python frigives parallelt i flere udviklingscyklusser, hvor 2.x-serien primært forbliver for kompatibilitet, herunder nogle funktioner importeret fra Python 3.x. PEP 3000 indeholder flere oplysninger om frigivelsesprocessen for en version.
Ligesom Perl 6 bryder Python 3.0 bagudkompatibilitet (bagudkompatibilitet). Brug af kode skrevet til 2.x-serien garanteres ikke med Python 3.0. Sidstnævnte bringer fundamentale ændringer, såsom den komplette skift til Unicode og af denne grund en nødvendig skelnen mellem strenge og "bytes" -objekter. Den dynamiske skrivning, der er knyttet til bestemte metoder på ordboglignende objekter, gør en problemfri overgang fra Python 2.x til Python 3.0 meget vanskelig. Et værktøj med navnet "2to3" oversætter størstedelen af 2.x-versioner til 3.x-versioner og angiver kodeområder, der kræver efterbehandling med specielle kommentarer og advarsler. I sin forudgivelse ser det ud til, at 2to3 lykkes helt ærligt med at opnå en korrekt oversættelse. Som en del af en migrering fra Python 2.x til Python 3.x anbefaler PEP 3000 at holde den originale kode som basis for ændringer og oversætte den til 3.x-platformen ved hjælp af 2to3.
Python 2.6 giver en start for bagudkompatibilitet samt en "advarende" tilstand, der skulle øge bevidstheden om potentielle overgangsproblemer for skiftet til Python 3.
Der er versioner af Python, der passer til Android og iPhone i version 2.5 eller 2.6. Fås i iOS Jailbreak på iOS takket være "installationsværktøjer" og på Android takket være SL4A, som endda giver mulighed for at lave små grafiske grænseflader takket være "android" -modulet, og som giver mulighed for at sende SMS , tænde kameraet eller at vibrere telefonen. De næste par linjer viser, hvordan man gø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 i Python på Blackberry- terminaler blev frigivet iJuni 2012, til BlackBerry OS 10. Systemet . En lettere version blev frigivet iseptember 2012, kaldet "BlackBerry-Tart", på grund af ordspil på engelsk: " a" tart "er lettere end en" pie " " med henvisning til den traditionelle " apple pie ". Det er baseret på Python 3.2.2.