Krajta | ||
Datum první verze | 20. února 1991 | |
---|---|---|
Paradigmata | Účel , imperativní a funkční | |
Autor | Guido van Rossum | |
Vývojáři | Softwarová nadace Python | |
Poslední verze | 3.9.6 (28. června 2021) | |
Vývojová verze | 3.10.0b4 (10. července 2021) | |
Psaní na stroji | Silné , dynamické , kachní psaní | |
Ovlivněno | ABC , C , Eiffel , ICON , Modula-3 , Java , Perl , Smalltalk , Tcl | |
Ovlivněno | Ruby , Groovy , Boo , Julia | |
Implementace | CPython , Jython , IronPython , PyPy | |
Napsáno | C pro CPython, Java pro Jython, C # pro IronPython a v samotném Pythonu pro PyPy | |
Operační systém | Multiplatformní | |
Licence |
Licence zdarma : Licence Python Software Foundation |
|
webová stránka | www.python.org | |
Přípona souboru | py, pyc, pyd, pyo, pyw, pyz a pyi | |
Python (čti / p i . T ɔ / ) je programovací jazyk vykládat , multi- paradigma a mezi platformami . Podporuje strukturované , funkční a objektově orientované imperativní programování . Má silné dynamické psaní , automatickou správu paměti pomocí uvolňování paměti a systém správy výjimek ; je tedy podobný Perl , Ruby , Scheme , Smalltalk a Tcl .
Jazyk Python je umístěn pod bezplatnou licencí blízkou licenci BSD a funguje na většině počítačových platforem , od smartphonů po sálové počítače , od Windows po Unix, zejména GNU / Linux přes macOS , nebo dokonce Android , iOS , a může být také přeloženo do Javy nebo .NET . Je navržen tak, aby optimalizoval produktivitu programátorů tím, že nabízí nástroje na vysoké úrovni a snadno použitelnou syntaxi .
Oceňují to také někteří pedagogové, kteří v něm najdou jazyk, kde syntaxe, jasně oddělená od nízkoúrovňových mechanismů , umožňuje snadné zahájení základních konceptů programování.
Python je programovací jazyk, který lze použít v mnoha kontextech a přizpůsobit se jakémukoli typu použití díky specializovaným knihovnám . Používá se však zejména jako skriptovací jazyk k automatizaci jednoduchých, ale zdlouhavých úkolů, jako je skript, který načítá počasí z Internetu nebo který se integruje do počítačově podporovaného návrhového softwaru za účelem automatizace určitých sekvencí opakujících se akcí (viz část Adopce ). Používá se také jako prototyp vývojového jazyka, když je potřeba funkční aplikace před optimalizací pomocí jazyka nižší úrovně. Je zvláště rozšířený ve vědeckém světě a má mnoho knihoven optimalizovaných pro numerické výpočty .
V pozdních 1980 , programátor Guido van Rossum se podílí na vývoji ABC programovacího jazyka na Centrum voor Wiskunde en Informatica (CWI) v Amsterdam , Nizozemí . Poté pracoval v týmu operačního systému Améba , jehož systémové volání bylo obtížné propojit s prostředím Bourne používaným jako uživatelské rozhraní . Poté věří, že skriptovací jazyk inspirovaný ABC by mohl být zajímavý jako tlumočník příkazů pro Amébu.
V roce 1989 využil týdenní dovolené během vánočních svátků a pomocí svého osobního počítače napsal první verzi jazyka. Fanoušek televizního seriálu Monty Python's Flying Circus se rozhodne pokřtít tento projekt Python. Inspiroval se hlavně ABC, například pro odsazení, jako je syntaxe nebo typy na vysoké úrovni, ale také z Modula-3 pro zpracování výjimek , jazyk C a nástroje UNIX .
Během následujícího roku si jazyk začal osvojovat projektový tým Améba, přičemž Guido se nadále rozvíjel hlavně ve svém volném čase. vÚnora 1991, první veřejná verze s číslem 0.9.0, je zveřejněna na fóru Usenet alt.sources. Nejnovější verzí vydanou na CWI je Python 1.2.
V roce 1995 Van Rossum pokračoval ve své práci na Pythonu na CNRI (v) v Restonu ve Spojených státech , kde vydal několik verzí softwaru.
Z'Srpna 1995, tým Pythonu pracuje na NCRI na Grálu jako webovém prohlížeči pomocí Tk . Jedná se o ekvivalent Pythonu prohlížeče HotJava , který vám umožňuje spouštět applety v zabezpečeném prostředí. První veřejná verze, dostupná v listopadu, je 0.2. Řídí vývoj modulů pro standardní knihovnu jako rexec , htmllib nebo urllib . Verze 0.6 bude poslední od Grálu ; je publikován vDuben 1999.
V roce 1999 se Computer Programming pro každého byl zahájen projekt (CP4E) společně mezi CNRI a DARPA . Jde o používání Pythonu jako programovacího vyučovacího jazyka . Tato iniciativa povede k vytvoření vývojového prostředí IDLE . Avšak kvůli nedostatku financování projektu ze strany DARPA a odchodu mnoha vývojářů Pythonu z NCRI (včetně Guida van Rossuma) projekt v roce 2000 vymřel. Python 1.6 byla poslední verzí vydanou na NCRI.
V roce 2000 se základní vývojový tým Pythonu přesunul na BeOpen.com a vytvořil tým BeOpen PythonLabs . Python 2.0 je jediná verze vydaná na BeOpen.com. Po tomto vydání se Guido Van Rossum a další vývojáři PythonLabs připojili k Digital Creations (nyní známému jako Zope Corporation ).
Andrew M. Kuchling publikuje v Prosince 1999text s názvem Python Warts , který syntetizuje nejčastější stížnosti vyjádřené proti jazyku. Tento dokument bude mít jednoznačný vliv na budoucí vývoj jazyka.
Python 2.1 je odvozená verze Pythonu 1.6.1 a Pythonu 2.0. Jeho licence je přejmenována na Python Software Foundation License . Jakýkoli kód , dokumentace a specifikace přidané od vydání Pythonu 2.1 alfa je ve vlastnictví Python Software Foundation (PSF), neziskové organizace založené v roce 2001, po vzoru Apache Software Foundation .
Aby bylo možné opravit některé jazykové chyby (např. Objektově orientovaný se dvěma typy tříd ) a vyčistit standardní knihovnu jejích zastaralých a nadbytečných prvků, rozhodl se Python prolomit zpětnou kompatibilitu v nové hlavní verzi Python 3.0, publikované vprosince 2008. Po této verzi rychle následuje verze 3.1, která opravuje časné chyby verze 3.0.
Python byl navržen jako čitelný jazyk. Jeho cílem je být vizuálně čistý. Například má méně syntaktických konstrukcí než mnoho strukturovaných jazyků, jako je C , Perl nebo Pascal . Komentáře jsou označeny křížkem (#).
Tyto bloky jsou označeny odsazení namísto výztuh je C nebo C ++ ; nebo begin ... endjako v Pascalu nebo Ruby . Zvětšení odsazení označí začátek bloku a zmenšení odsazení označí konec aktuálního bloku. Podle konvence (aktuálně PEP8) je odsazení v Pythonu obvykle čtyři mezery.
Faktoriální funkce v C. | Faktoriální funkce v Pythonu |
---|---|
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) |
Poznámka: Odsazení bylo možné ve verzi C změnit nebo odstranit, aniž by se změnilo jeho chování. Podobně lze funkci Python zapsat s podmíněným výrazem. Správné odsazení však usnadňuje detekci chyb při vnoření několika bloků, a proto usnadňuje eliminaci těchto chyb. Proto je vhodnější odsazovat programy v C. Krátká verze by byla napsána takto:
Faktoriální funkce v C. | Faktoriální funkce v Pythonu |
---|---|
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 |
Klíčová slova vyhrazená pro jazyk Python jsou uvedena v seznamu keyword.kwlistmodulů keyword.
Klíčová slova Python 2.7.5 jsou: 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.
Jako Python 3.0, printa execjiž nejsou jazykových klíčová slova, ale funkcí modulu builtins. Jsou přidány do klíčových slov: True, False, Nonea nonlocal. První tři byly již přítomny v předchozích verzích, ale již je nelze upravovat (dříve True = 1bylo možné přiřazení ). nonlocalbyl zaveden PEP 3104 a umožňuje ve funkci definované uvnitř jiné funkce upravit proměnnou vyšší úrovně rozsahu . Před tím byly upravitelné pouze lokální proměnné funkce a globální (úroveň modulu). Bylo však možné a stále je bez klíčového slova nonlocalupravit objekt přiřazený k proměnné vyšší úrovně rozsahu, například seznam s metodou append- to je samozřejmě pro objekt neměnný .
Základní typyZákladní typy v Pythonu jsou relativně komplexní a výkonné. Existují mimo jiné:
Iterovatelné objekty se procházejí fortakto:
for element in objet_iterable: traiter(element)U řetězce znaků pokračuje iterace znak po znaku.
Je možné odvodit třídy ze základních typů a vytvořit si vlastní typy. Pomocí iteračního protokolu jazyka můžete také vytvořit vlastní typy iterovatelných objektů, aniž byste zdědili základní iterovatelné objekty.
Funkcionální programováníPython umožňuje programování ve funkčním stylu . Má také porozumění seznamu a obecněji porozumění může vytvářet generátory, slovníky nebo sady . Například k vytvoření seznamu čtverců přirozených čísel menších než 10 můžeme použít výraz:
liste = [x**2 for x in range(10)] # liste = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Seznam sudých čísel :
liste = [entier for entier in range(10) if entier % 2 == 0] # liste = [0, 2, 4, 6, 8]Tabulka přechodu od písmen abecedy k jejich ASCII kódu :
{chr(n): n for n in range(65, 91)}Sada písmen ve slově (vytvoří sadu {'r', 'c', 'd', 'b', 'a'}):
s = "abracadabra" {c for c in s}Porozumění se může skládat z více smyček a filtrů a existuje korespondence s kódem provádějícím stejný výpočet pomocí pokynů fora if :
Pochopení | Ekvivalentní kód |
---|---|
[ 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) |
Je možná omezená forma anonymní funkce :
lambda x: x + 2Lambda funkce lze definovat inline a použít je jako argumenty ve funkčních výrazech:
filter(lambda x: x < 5, une_liste)vrátí seznam složený z prvků a_list menší než 5. Stejného výsledku lze dosáhnout s
[x for x in une_liste if x < 5]Python lambdas připouští pouze výrazy a nelze je použít jako zobecněné anonymní funkce; ale v Pythonu jsou všechny funkce objekty, takže je lze předat jako argumenty jiným funkcím a v případě potřeby je vyvolat. Funkce definovaná s def může být vytvořena uvnitř jiné funkce a my tak získáme definici funkce v lokální proměnné, například:
def filtre_inferieur_a_5(une_liste): def mon_filtre(x): # variable locale mon_filtre return x < 5 return filter(mon_filtre, une_liste)Místní funkce může upravit prostředí funkce, která ji vytvořila, díky klíčovému slovu nonlocal(viz Shutdown (IT) ):
def accum(pas): total = 0 def ajoute(n): nonlocal total total += n * pas return total return ajouteJe tedy možné vytvořit několik akumulátorů, z nichž každý odkazuje na svůj vlastní součet. Prostřednictvím atributu je možné přistupovat do prostředí místní funkce __closure__.
Programování objektůVšechny základní typy, funkce, instance tříd („klasické“ objekty jazyků C ++ a Java ) a samotné třídy (které jsou instancemi meta-tříd) jsou objekty.
Třída je definována klíčovým slovem class. Tyto třídy Python podporuje vícenásobnou dědičnost ; neexistuje statické přetížení jako v C ++ nebo omezení dědičnosti jako je tomu v Javě (třída implementuje několik rozhraní a dědí z jedné třídy), ale mechanismus volitelných argumentů a klíčovým slovem je obecnější a flexibilnější . V Pythonu může atribut objektu odkazovat na proměnnou instance nebo třídy (nejčastěji na metodu). Atribut je možné číst nebo upravovat dynamicky pomocí funkcí:
Příklad dvou jednoduchých tříd:
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" Speciální metody a definice operátorůPython poskytuje elegantní, objektově orientovaný mechanismus pro definování předdefinované sady operátorů: libovolnému objektu Pythonu lze dát takzvané speciální metody.
Tyto metody začínající a končící dvěma podtržítky se nazývají při použití operátoru na objektu: +(metoda __add__), +=(metoda __iadd__), [](metoda __getitem__), ()(metoda __call__) atd. Metody jako __repr__a __str__umožňují definovat reprezentaci objektu v interaktivním tlumočníkovi a jeho vykreslování pomocí funkce tisku .
Možností je mnoho a jsou popsány v jazykové dokumentaci.
Například můžeme definovat přidání dvou dvourozměrných vektorů s následující třídou:
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) GenerátoryKlíčové slovo yieldpoužité ve funkci umožňuje vytvořit z této funkce generátor. Voláním této funkce se vrátí objekt generátoru typů , který lze použít například ve smyčce for.
Při každém volání generátor provádí své zpracování, dokud nenarazí na klíčové slovo yield, nevrátí hodnotu výrazu yielda při dalším volání obnoví svůj tok hned po yield. Například pro výpočet Fibonacciho posloupnosti můžeme napsat:
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))Modul itertoolsumožňuje manipulovat s generátory. Například pro extrahování prvních 10 prvků z předchozího generátoru:
import itertools list(itertools.islice(gen_fibonacci(), 10)) # renvoie [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]Od Pythonu 3.3 je možné generovat generátor z rekurzivní funkce díky syntaxi yield from, která se objevila v PEP 380 a která „deleguje“ výpočet na subgenerátor. Následující příklad vypočítá permutace královen odpovídající řešení problému osmi královen rozšířených na šachovnici velikosti 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 92Tvůrce může vypadat stejně jako funkce, která vrací seznam, ale na rozdíl od seznamu, který obsahuje všechny jeho prvky, stavitel počítá jeho prvky jeden po druhém .
Test 36 in [n * n for n in range(10)]bude tedy proveden na seznamu vypočítaném v plném rozsahu, zatímco v případě 36 in (n * n for n in range(10)), který používá generátor, se výpočet čtverců zastaví, jakmile je nalezeno 36. Můžeme se o tom přesvědčit n * ntím, že ho nahradíme voláním funkce, které vytvoří hranový efekt , například zobrazením na obrazovce.
Díky intenzivnímu používání slovníků (asociativní kontejner vyvinutý s hashovacími tabulkami ) umožňuje Python prozkoumat různé objekty jazyka ( introspekce ) a v určitých případech je upravit ( přímluva ).
Psaní se nekontroluje při kompilaci. Python používá kachní psaní : za běhu, pokud má metoda vyvolaná na objektu stejný podpis jako metoda deklarovaná na tomto objektu, provede se druhá metoda. Proto vyvolání metody, která na objektu neexistuje, selže, což znamená, že dotyčný objekt není správného typu. I přes nedostatek statického psaní je Python silně zadáván, což zakazuje nesmyslné operace (například přidání čísla do řetězce) namísto tichého pokusu o jeho převedení do smysluplné formy. Python poskytuje funkce pro transformaci proměnných do jiného typu:
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 také poskytuje mechanismus statického psaní pro atributy třídy pomocí API vlastností nebo dekorativního návrhového vzoru .
AnotaceOd verze 3.0 nabízí Python anotace proměnných ve funkcích (zavedeno v PEP 3107). To umožňuje, aby byl kód čitelnější, aniž by fungoval jako řešení statického psaní, protože nic nezavazuje dodržovat tyto anotace.
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 fonctionnelOd verze 3.5 navíc Python nabízí typovací modul (představený v PEP 484).
from typing import List def split_string(string: str) -> List[str]: return string.split(" ") SestaveníJe možné provést statickou analýzu modulů Pythonu pomocí nástrojů jako Pylint, mypy nebo PyChecker. Bez nutnosti provádění tyto nástroje rozpoznávají chyby nebo zastaralé konstrukce. Například třída, která dědí z abstraktní třídy a která nedefinuje abstraktní metody, ani proměnné použité před deklarováním, nebo atributy instance deklarované mimo metodu __init__.
Je také možné vygenerovat mezikód Pythonu ( bytecode ).
Nástroje jako PyInstaller nebo jiné konkrétnější jako cx_Freeze pod Unixem , Windows a macOS , py2app pod macOS a py2exe pod Windows umožňují „kompilovat“ program Pythonu ve formě spustitelného souboru obsahujícího program a interpreta jazyka Python.
Program nefunguje rychleji (není kompilován jako strojový kód), ale to značně zjednodušuje jeho distribuci, zejména na strojích, kde není nainstalován překladač Pythonu.
V Pythonu je vše objekt , v tom smyslu, že proměnná může obsahovat odkaz na všechny prvky, se kterými jazyk manipuluje: čísla, metody, moduly atd. . Před verzí 2.2 však byly třídy a instance tříd zvláštním typem objektu, což znamenalo, že bylo například nemožné odvodit vlastní podtřídu z objektu seznamu .
MetodyObjektový model Pythonu je inspirován modelem Modula-3. Mezi těmito výpůjčkami je povinnost deklarovat instanci aktuálního objektu, běžně pojmenovaného já , jako první argument metod, a pokaždé, když chceme získat přístup k datům této instance v těle této metody. Tato praxe není pro programátory přicházející například z C ++ nebo Javy přirozená, hojnost sebe sama je často kritizována jako vizuální znečištění, které brání čtení kódu. Naopak propagátoři explicitního já věří, že se vyhýbá použití konvence pojmenování pro data členů a že zjednodušuje úkoly, jako je volání metody nadtřídy nebo řešení disambiguace mezi daty člena.
Python rozpoznává tři typy metod:
Jazyk má velmi omezenou podporu zapouzdření . Neexistuje, jako například v Javě, kontrola přístupnosti pomocí klíčových slov jako protectednebo private.
Filozofií Pythonu je koncepčně odlišit zapouzdření od skrývání informací. Cílem maskování informací je zabránit podvodnému použití, jedná se o bezpečnost počítače . Modul bašty standardní knihovny, který již není udržován v nejnovějších verzích jazyka, tak umožňoval řídit přístup k atributům objektu v rámci prostředí s omezeným prováděním.
Zapouzdření je problém vývoje softwaru. Slogan vývojářů Pythonu je , že zde všichni souhlasíme s dospělými . Mají za to, že stačí označit konvence psaní veřejných částí rozhraní a že je na uživatelích objektů, aby vyhověli těmto konvencím nebo převzali odpovědnost. Zvyk je předpona soukromých členů podtržítkem. Jazyk také umožňuje použití dvojitého podtržítka, aby nedocházelo ke kolizím jmen, a to automatickou předponou názvu dat jménem třídy, kde je definována.
Použití funkce property()umožňuje definovat vlastnosti, jejichž cílem je pomocí metod zachytit přístupy k datovému členu. Díky tomu není nutné systematicky definovat přístupové objekty a skrýt data, jak je to běžné například v C ++.
DědictvíPython podporuje vícenásobnou dědičnost . Od verze 2.3 používá k řešení pořadí rozlišení metody ( MRO ) algoritmus C3 (en) odvozený z jazyka Dylan . Předchozí verze používaly algoritmus hlubokého průchodu, který způsoboval problémy v případě diamantového dědictví .
Python má velkou standardní knihovnu , která poskytuje nástroje vhodné pro mnoho různých úkolů. Počet modulů ve standardní knihovně lze zvýšit pomocí konkrétních modulů napsaných v C nebo Pythonu.
Standardní knihovna je obzvláště dobře navržena pro psaní aplikací, které používají internet, s velkým množstvím podporovaných standardních formátů a protokolů (například MIME a HTTP ). K dispozici jsou také moduly pro vytváření grafických rozhraní a manipulaci s regulárními výrazy . Python také obsahuje rámec pro testování jednotek ( unittestdříve PyUnit před verzí 2.1) pro vytváření sad komplexních testů.
Ačkoli si každý programátor může osvojit vlastní konvence pro psaní kódu v Pythonu, Guido van Rossum vytvořil průvodce, který se nazývá „PEP 8“. Publikováno v roce 2001 se stále udržuje, aby se přizpůsobilo změnám v jazyce. Google také nabízí průvodce.
Python má k dispozici několik modulů pro vytváření softwaru s grafickým rozhraním . Nejběžnější je Tkinter . Tento modul je vhodný pro mnoho aplikací a ve většině případů jej lze považovat za dostatečný. Byly však vytvořeny další moduly, které umožňují propojení Pythonu s jinými softwarovými knihovnami („ sada nástrojů “), pro více funkcí, pro lepší integraci s použitým operačním systémem nebo jednoduše pro použití Pythonu s jeho oblíbenou knihovnou. Někteří programátoři považují používání Tkinteru za mnohem bolestivější než jiné knihovny. Tyto další moduly nejsou součástí standardní knihovny, a proto je nutné je získat samostatně.
Hlavní moduly poskytující přístup do knihoven GUI jsou Tkinter a Pmw (Python megawidgets) pro Tk , wxPython pro wxWidgets , PyGTK pro GTK + , PyQt a PySide pro Qt a nakonec FxPy pro FOX Toolkit . K dispozici je také adaptace SDL knihovny : Pygame , je vazba na SFML : PySFML, stejně jako knihovna psaný obzvláště pro Python: Pyglet (en) .
Je také možné vytvářet aplikace Silverlight v Pythonu na platformě IronPython .
Guido van Rossum je hlavním autorem Pythonu a jeho roli stálého ústředního rozhodovatele v Pythonu vtipně potvrzuje titul „ Benevolent Dictator for Life “ ( BDFL). Od té dobyčervence 2018, Guido van Rossum se prohlásil na trvalou dovolenou ze své role BDFL. Rovněž zrušil svou kandidaturu na jazykovou radu pro režii v rocelistopadu 2019.
Pomáhá mu tým klíčových vývojářů, kteří mají přístup k zápisu do úložiště CPython a koordinují se v seznamu adresátů python-dev. Pracují hlavně na základním jazyce a knihovně. Občas dostávají příspěvky od ostatních vývojářů Pythonu prostřednictvím platformy pro správu chyb Roundup , která nahradila SourceForge .
Uživatelé nebo vývojáři knihoven třetích stran používají celou řadu dalších zdrojů. Hlavním obecným médiem kolem Pythonu je anglicky mluvící fórum Usenet comp.lang.python.
Narážky na Monty Pythona jsou docela běžné. Výukové programy pro Python často používají slova spam a vejce jako proměnnou metasyntaxe . Toto je odkaz na na Monty Python Spam náčrtek , kde dva patroni pokusí objednat jídlo použít kartu, která má SPAM značky konzerv šunky prakticky v každé misce. Tento náčrt byl také vzat pro referenci k označení nevyžádaného e-mailu .
Několik společností nebo organizací na svých oficiálních webových stránkách uvádí, že používají Python:
Python je také příkazový jazyk pro velké množství svobodného softwaru:
A komerční:
Python se používá jako programovací jazyk na středních a vysokých školách, zejména ve Francii. Od roku 2013 se zde současně se Scilabem vyučuje všem studentům v přípravných hodinách přírodovědných předmětů v rámci společného jádra (informatika pro všechny). Výuka informatiky byla dříve v MP omezena na jednu možnost, výuka probíhala v jazyce Caml nebo Pascal . Tato možnost stále existuje, ale Pascal byl od zasedání soutěží v roce 2015 opuštěn, takže v této výuce zůstává pouze Caml. První soutěžní testy v jazyce Python jsou také testy z roku 2015.
Kromě referenční verze s názvem CPython (protože je napsána v jazyce C ) existují další systémy implementující jazyk Python:
Tyto další verze nemusí nutně těžit z celé knihovny funkcí napsaných v jazyce C pro referenční verzi, ani z nejnovějších evolucí jazyků.
K dispozici jsou různé distribuce, které někdy obsahují mnoho balíčků věnovaných dané doméně:
Nejedná se o žádnou jinou implementaci jazyka Python: jsou založeny na CPythonu, ale přicházejí s předinstalovanou řadou knihoven.
Verze | Datum vydání | Konec podpory | Nově příchozí |
---|---|---|---|
1,5 (0,2) | 3. ledna 1998 | 13. dubna 1999 |
|
1.6 | 5. září 2000 | Září 2000 |
|
2.0 | 16. října 2000 | 22. června 2001 |
|
2.1 | 15. dubna 2001 | 9. dubna 2002 | |
2.2 | 21. prosince 2001 | 30. května 2003 |
|
2.3 | 29. června 2003 | 11. března 2008 | |
2.4 | 30. listopadu 2004 | 19. prosince 2008 |
|
2.5 | 19. září 2006 | 26. května 2011 |
|
2.6 | 1. st October rok 2008 | 24. srpna 2010 (aktualizace zabezpečení do 29. října 2013) |
|
2.7 | 3. července 2010 | 1. st January do roku 2020 |
|
3.0 | 3. prosince 2008 | 13. února 2009 |
Viz PEP 3100 Podrobnosti |
3.1 | 27. června 2009 | 12. června 2011 (aktualizace zabezpečení do Červen 2012) |
|
3.2 | 20. února 2011 | 13. května 2013 (aktualizace zabezpečení do 20. února 2016) |
|
3.3 | 29. září 2012 | 8. března 2014 (aktualizace zabezpečení do 29. září 2017) |
|
3.4 | 16. března 2014 | 9. srpna 2017 (aktualizace zabezpečení do 18. března 2019) |
|
3.5 | 13. září 2015 | August 8 , je 2017 (aktualizace zabezpečení do 13. září 2020) |
|
3.6 | 23. prosince 2016 | 24. prosince 2018 (aktualizace zabezpečení do prosince 2021) |
|
3.7 | 31. ledna 2018 | 27. června 2020 (aktualizace zabezpečení do Červen 2023) |
|
3.8 | 14. října 2019 | Duben 2021 (aktualizace zabezpečení do Říjen 2024) |
|
3.9 | 5. října 2020 | Květen 2022 (aktualizace zabezpečení do Říjen 2025) |
|
Návrhy na vylepšení Pythonu (nebo PEP: Návrh na vylepšení Pythonu ) jsou textové dokumenty, které mají být cestou ke zdokonalení Pythonu a předcházet všem jeho úpravám. PEP je návrh zaměřený na rozvoj (proces PEP) , technický návrh (Standard Track PEP) nebo jednoduché doporučení ( Informační PEP ). Nejznámějším PEP je PEP 8 pro jeho průvodce stylem kódu.
V roce 2009 se jedná o verzi 3 Pythonu, která stále častěji nahrazuje verzi 2 (projekt se původně jmenoval „Python 3000“ nebo „Py3K“), bez zpětné kompatibility se sérií verzí 2.x, aby byly odstraněny slabé stránky jazyk. Pravidlem projektu bylo „snížit redundanci Pythonu odstraněním zastaralých metod“. Python 3.0a1, první alfa verze, byl vydán dne31. srpna 2007a existuje PEP, který podrobně popisuje plánované změny, a také stránku, která má programátorům pomoci při výběru Pythonu 2 nebo 3.
Kalkulačky určené pro studenty středních škol (včetně Casio , NumWorks , Texas Instruments ...) a podporující práci Pythonu v Pythonu 3. Tyto kalkulačky si mohou vyměňovat programy s osobními počítači .
FilozofiePython 3 byl vyvinut se stejnou filozofií jako v jeho dřívějších verzích, takže jakýkoli odkaz na filozofii Pythonu by se vztahoval i na verzi 3. Jazyk však nakonec hromadil řadu nadbytečných metod. Při hledání odstranění redundance v jazyce a jeho modulech se Python 3 řídí pravidlem Pythonu „Měla by existovat pouze jedna metoda, která je pro vše optimální a přirozená“.
Python 3 zůstává jazykem více paradigmat. Programátoři budou mít i nadále na výběr mezi objektovou orientací, strukturovaným programováním, funkčním programováním a dalšími paradigmaty; Python 3 je určen k přirozenějšímu použití než ve verzích 2.x, i když printna rozdíl od Pythonu 2 vyžaduje použití závorek.
Plánování a kompatibilitaPython 3.0a1, první alfa verze Pythonu 3.0, byl vydán dne 31. srpna 2007. Verze 2.xa 3.x Pythonu budou vydávány paralelně pro několik vývojových cyklů, během nichž řada 2.x zůstane primárně z důvodu kompatibility, včetně některých funkcí importovaných z Pythonu 3.x. PEP 3000 obsahuje více informací o procesu vydání verze.
Stejně jako Perl 6 , Python 3.0 narušuje zpětnou kompatibilitu (zpětná kompatibilita). U Pythonu 3.0 není zaručeno použití kódu napsaného pro řadu 2.x. Ten přináší zásadní změny, jako je úplný přechod na Unicode az tohoto důvodu je nutné rozlišovat mezi řetězci a "bajty" objekty. Dynamické psaní spojené s určitými metodami na slovníkových objektech dělá hladký přechod z Pythonu 2.x na Python 3.0 velmi choulostivým. Nástroj s názvem „2to3“ převádí většinu verzí 2.x na verze 3.x a označuje oblasti kódu vyžadující dokončení se speciálními komentáři a varováními. Ve svém předběžném vydání se zdá, že 2to3 upřímně uspěl v dosažení správného překladu. V rámci migrace z Pythonu 2.x na Python 3.x doporučuje PEP 3000 ponechat původní kód jako základ pro úpravy a přeložit jej pro platformu 3.x pomocí 2to3.
Python 2.6 poskytuje začátek zpětné kompatibility a také „varovný“ režim, který by měl zvýšit povědomí o potenciálních problémech s přechodem přechodu na Python 3.
Existují verze Pythonu vhodné pro Android a iPhone ve verzi 2.5 nebo 2.6. K dispozici v systému iOS Jailbreak v systému iOS díky „instalačním nástrojům“ a v systému Android díky SL4A, který díky modulu „android“ dokonce umožňuje vytvářet malá grafická rozhraní a který umožňuje odesílat SMS , zapínat kameru nebo vibrovat telefon. Následující řádky ukazují, jak to provést:
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 secondesV roce byl vydán port Pythonu na terminálech BlackberryČerven 2012, pro systém BlackBerry OS 10. Lehčí verze byla vydána v rocezáří 2012, nazvaný „BlackBerry-Tart“, kvůli slovní hře v angličtině: „ a“ tart “je lehčí než„ koláč “ “, v odkazu na tradiční „ jablečný koláč “. Je založen na Pythonu 3.2.2.