Piton | ||
Az első változat kelte | 1991. február 20 | |
---|---|---|
Paradigmák | Cél , elengedhetetlen és funkcionális | |
Szerző | Guido van Rossum | |
Fejlesztők | Python Software Foundation | |
Utolsó verzió | 3,9,6 ( 2021. június 28) | |
Fejlesztő verzió | 3.10.0b4 ( 2021. július 10) | |
Gépelés | Erős , dinamikus , kacsa gépelés | |
Befolyásolta | ABC , C , Eiffel , ICON , Modula-3 , Java , Perl , Smalltalk , Tcl | |
Befolyásolt | Ruby , Groovy , Boo , Julia | |
Végrehajtások | CPython , Jython , IronPython , PyPy | |
Beírva | C a CPython, a Java a Jython, a C # az IronPython és maga a Python esetében a PyPy | |
Operációs rendszer | Többplatformos | |
Engedély |
Ingyenes licenc : Python Software Foundation licenc |
|
Weboldal | www.python.org | |
Fájlkiterjesztés | py, pyc, pyd, pyo, pyw, pyz és pyi | |
Python (ejtsd / p i . T ɔ / ) egy programozási nyelv értelmezni , multi- paradigma és cross-platform . Elősegíti a strukturált , funkcionális és objektum-orientált imperatív programozást . Ez az erős , dinamikus gépelés , automatikus memória kezelése által szemétgyűjtés és kivétel rendszert ; így hasonló Perl , Ruby , Scheme , Smalltalk és Tcl .
A Python nyelv ingyenes licenc alá kerül, közel a BSD licenchez, és a legtöbb számítógépes platformon működik , az okostelefonoktól a nagyszámítógépekig , a Windows- tól az Unix-ig , különösen a GNU / Linuxon keresztül a macOS-on , vagy akár az Androidon , az iOS-on , és Java-ra vagy .NET- re fordítva . Úgy tervezték, hogy optimalizálja a programozók termelékenységét magas szintű eszközök és könnyen használható szintaxis kínálatával .
Nagyra értékeli néhány pedagógus is, akik olyan nyelvet találnak benne, ahol az alacsony szintű mechanizmusoktól egyértelműen elkülönített szintaxis lehetővé teszi a programozás alapfogalmainak könnyű megindítását .
A Python egy olyan programozási nyelv , amely számos környezetben használható, és a speciális könyvtáraknak köszönhetően bármilyen típusú felhasználáshoz alkalmazkodik . Azonban különösen használható programozási nyelv a automatizálható egyszerű, de unalmas feladatokat, mint például egy script , ami letölteni az időjárás a Internet , vagy hogy integrálódnak számítógéppel segített tervezés szoftver érdekében, hogy automatizálják bizonyos szekvenciák ismétlődő cselekvések ( az örökbefogadás szakasz ). Prototípus-fejlesztő nyelvként is használják, ha funkcionális alkalmazásra van szükség, mielőtt azt alacsonyabb szintű nyelvvel optimalizálnák. Különösen elterjedt a tudományos világban , és számos könyvtárat optimalizáltak numerikus számításra .
A késő 1980-as években , programozó Guido van Rossum-ben részt vett a fejlesztés a ABC programozási nyelv a Centrum voor Wiskunde en Informatika (CWI) az Amszterdam , Hollandia . Ezután az Amoeba operációs rendszer csapatában dolgozott, amelynek rendszerhívásait nehéz volt összekapcsolni a felhasználói felületként használt Bourne-héjjal . Ezután úgy véli, hogy az ABC által inspirált szkriptnyelv érdekes lehet Amoeba parancsértelmezőjeként .
A 1989 , kihasználva egy hét nyaralás alatt a karácsonyi ünnepek , ő használt személyi számítógép írni az első változata a nyelvet. A Monty Python Flying Circus című televíziós sorozatának rajongója úgy dönt, hogy megkereszteli ezt a Python-projektet. Főleg az ABC inspirálta, például a behúzáshoz, mint a szintaxis vagy a magas szintű típusok, de a Modula-3-tól a kivételkezeléshez , a C nyelvhez és a UNIX eszközökhöz is .
A következő évben a nyelvet az Amoeba projekt csapata kezdte átvenni, Guido elsősorban szabadidejében folytatta fejlődését. Ban ben1991. február, az első nyilvános verzió, 0.9.0 számmal, a Usenet alt.sources fórumára kerül . A CWI legújabb verziója a Python 1.2.
A 1995 , Van Rossum folytatta munkáját a Python a CNRI (in) a Reston , a Egyesült Államok , ahol megjelent több verziók.
Tól től' 1995. augusztusA Python csapat dolgozik a NCRI a Grál egy webböngésző segítségével Tk . Ez a HotJava böngésző Python megfelelője , amely lehetővé teszi kisalkalmazások biztonságos környezetben történő futtatását . Az első, novemberben elérhető nyilvános verzió 0,2. Ez vezérli a szabványos könyvtár moduljainak fejlesztését, mint például a rexec , a htmllib vagy az urllib . A 0.6-os verzió lesz az utolsó Graaltól ; -ban jelent meg1999. április.
A 1999 , a számítógépes programozás mindenki számára elérhető (CP4E) projekt indult közösen közötti CNRI és DARPA . Arról van szó, hogy a Python-t programozási tannyelvként használja . Ez a kezdeményezés az IDLE fejlesztői környezet megteremtéséhez vezet . Mivel azonban a DARPA nem finanszírozta a projektet, és sok Python-fejlesztő távozott az NCRI-től (beleértve Guido van Rossumot is), a projekt 2000-ben kihalt. A Python 1.6 volt az utolsó verzió, amelyet az NCRI adott ki.
A 2000 , a mag Python fejlesztő csapat költözött BeOpen.com alkotják a BeOpen PythonLabs csapat . A Python 2.0 az egyetlen verzió, amelyet a BeOpen.com adott ki. A kiadás után Guido Van Rossum és a többi PythonLabs fejlesztő csatlakozott a Digital Creationshoz (ma Zope Corporation néven ismertek ).
Andrew M. Kuchling itt publikál 1999. decembera Python Warts nevű szöveg , amely szintetizálja a nyelvvel szemben kifejtett leggyakoribb sérelmeket. Ez a dokumentum határozottan befolyásolja a nyelv jövőbeli fejlődését.
A Python 2.1 a Python 1.6.1 és a Python 2.0 származékos verziója. Licencét átnevezik Python Software Foundation licencre . A Python 2.1 alpha kiadása óta hozzáadott bármely kód , dokumentáció és specifikáció a 2001-ben alapított nonprofit szervezet , az Apache Software Foundation mintájára készült Python Software Foundation (PSF) tulajdonában van .
Néhány nyelvi hiba kijavítása érdekében (pl. Objektumorientált két típusú osztállyal ), valamint az elavult és felesleges elemeinek szokásos könyvtárának megtisztítása érdekében a Python úgy döntött, hogy megszakítja a visszamenőleges kompatibilitást az új fő verzióban, a Python 3.0-ban.2008. december. Ezt a verziót gyorsan követi a 3.1-es verzió, amely kijavítja a 3.0-as verzió korai hibáit.
A Python-t olvasható nyelvnek tervezték. Célja, hogy vizuálisan tiszta legyen. Például kevesebb a szintaktikai konstrukciója, mint sok strukturált nyelvnek, mint például a C , Perl vagy Pascal . A megjegyzéseket kereszttel (#) jelöli .
A blokkokat a merevítők helyett a behúzás azonosítja, mint C vagy C ++ ; vagy begin ... endmint Pascal vagy Ruby . A behúzás növelése jelzi a blokk kezdetét, a behúzás csökkentése pedig az aktuális blokk végét. Megállapodás szerint (jelenleg PEP8) a behúzás általában négy szóköz a Pythonban.
Faktoriális függvény C-ben | Faktoriális függvény a Pythonban |
---|---|
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) |
Megjegyzés: A behúzás megváltoztatható vagy eltávolítható a C verzióban anélkül, hogy megváltoztatná annak viselkedését. Hasonlóképpen, a Python függvény írható feltételes kifejezéssel. A helyes behúzás azonban megkönnyíti a hibák észlelését, ha több blokk beágyazódik, és ezért megkönnyíti e hibák kiküszöbölését. Ezért célszerű a programokat C-ben behúzni. A rövid verzió a következőképpen íródik:
Faktoriális függvény C-ben | Faktoriális függvény a Pythonban |
---|---|
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 fenntartva kulcsszavak is biztosított a keyword.kwlistmodul lista keyword.
A kulcsszavak a Python 2.7.5 közül 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.
Mivel a Python 3.0, printés execmár nem nyelvű kulcsszavakat, de modul funkciói builtins. Adunk kulcsszavak: True, False, Noneés nonlocal. Az első három már jelen volt a korábbi verziókban, de már nem szerkeszthetők (korábban a hozzárendelés True = 1lehetséges volt). nonlocalvezette be a PEP 3104, és lehetővé teszi, egy függvény belsejében egy másik funkciója, hogy módosítsa a változó egy magasabb szintű körét . Előtte csak a függvény lokális és globális (modulszintű) változói voltak módosíthatók. Azonban lehetséges volt, és még mindig nincs kulcsszó nonlocal, módosítani egy objektumot, amely egy magasabb szintű hatókörű változóhoz van hozzárendelve, például egy listát a metódussal append- ez nyilvánvalóan lehetetlen egy változatlan objektum esetén .
AlaptípusokA Python alaptípusai viszonylag átfogóak és hatékonyak. Többek között vannak:
Az iterálható objektumok foraz alábbiak szerint hurkolódnak :
for element in objet_iterable: traiter(element)Karakterlánc esetén az iteráció karakterenként halad.
Lehetőség van osztályok származtatására alaptípusokból saját típusok létrehozásához. A nyelv iterációs protokolljának használatával saját típusú iterálható objektumokat is készíthet az alap iterable öröklése nélkül.
Funkcionális programozásA Python lehetővé teszi a programozást funkcionális stílusban . Emellett listás megértése is van , és általánosabban a megértések generálókat, szótárakat vagy készleteket hozhatnak létre . Például a 10-nél kisebb természetes szám négyzetek listájának összeállításához használhatjuk a következő kifejezést:
liste = [x**2 for x in range(10)] # liste = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]A páros számok listája :
liste = [entier for entier in range(10) if entier % 2 == 0] # liste = [0, 2, 4, 6, 8]Áttérési táblázat az ábécé betűitől az ASCII kódig :
{chr(n): n for n in range(65, 91)}A betűk halmaza egy szóban (előállítja a halmazt {'r', 'c', 'd', 'b', 'a'}):
s = "abracadabra" {c for c in s}A megértés több hurokból és szűrőből állhat, és van egy megfelelés a kóddal, amely ugyanazt a számítást hajtja végre utasítások forés if :
Megértés | Ekvivalens 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) |
Az anonim funkció korlátozott formája lehetséges:
lambda x: x + 2A lambda függvények sorban definiálhatók és argumentumként használhatók a funkcionális kifejezésekben:
filter(lambda x: x < 5, une_liste)5-nél kisebb a_list elemeiből álló listát ad vissza. Ugyanez az eredmény érhető el a
[x for x in une_liste if x < 5]A Python lambdas csak kifejezéseket ismer be, és nem használható általánosított névtelen függvényként; de a Pythonban minden függvény objektum, így argumentumként átadhatók más függvényeknek, és szükség esetén meghívhatók. Valójában egy def- vel definiált függvény létrehozható egy másik függvény belsejében, és így egy függvény-definíciót kapunk egy helyi változóban, például:
def filtre_inferieur_a_5(une_liste): def mon_filtre(x): # variable locale mon_filtre return x < 5 return filter(mon_filtre, une_liste)A helyi függvény a kulcsszónak köszönhetően módosíthatja az azt létrehozó függvény környezetét nonlocal(lásd: Leállítás (IT) ):
def accum(pas): total = 0 def ajoute(n): nonlocal total total += n * pas return total return ajouteÍgy több akkumulátort lehet létrehozni, amelyek mindegyike a saját összértékére utal. Az attribútum segítségével hozzáférhet egy helyi függvény környezetéhez __closure__.
Objektumok programozásaAz összes alaptípus, függvény, az osztályok példányai (a C ++ és a Java nyelv "klasszikus" objektumai ) és maguk az osztályok (amelyek meta-osztályok példányai) objektumok.
Az osztályt a kulcsszóval határozzuk meg class. A Python osztályok támogatják a többszörös öröklődést ; nincs statikus túlterhelés, mint a C ++ - ban, vagy az öröklés korlátozása, mint a Java esetében (egy osztály több interfészt valósít meg, és egyetlen osztályból örököl), de az opcionális argumentumok és kulcsszavak mechanizmusa általánosabb és rugalmasabb . A Pythonban az objektum attribútuma hivatkozhat egy példányra vagy osztályváltozóra (leggyakrabban egy módszerre). Dinamikusan olvasható vagy módosítható az attribútum a függvényekkel:
Példa két egyszerű osztályra:
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ális módszerek és az operátorok meghatározásaA Python elegáns, objektumorientált mechanizmust biztosít az operátorok előre definiált halmazának meghatározásához: bármely Python objektumnak adható úgynevezett speciális módszer.
Ezeket a két aláhúzással kezdődő és befejező módszereket hívjuk meg, ha operátort használunk az objektumon: +(módszer __add__), +=(módszer __iadd__), [](módszer __getitem__), ()(módszer __call__) stb. Az olyan módszerek, mint például az interaktív tolmácsban az objektum reprezentációjának és annak megjelenítésének meghatározása a nyomtatási funkcióval, __repr__és __str__lehetővé teszik .
A lehetőségek számosak, és a nyelvi dokumentáció leírja őket.
Például meghatározhatunk két kétdimenziós vektor hozzáadását a következő osztályral:
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átorokA yieldfüggvényben használt kulcsszó lehetővé teszi, hogy ezt a függvényt generátorrá tegyék. Ennek a függvénynek a meghívása egy típusú generátor objektumot eredményez , amelyet forpéldául egy hurokban lehet használni .
Minden egyes híváskor a generátor addig végzi a feldolgozását, amíg meg nem találja a kulcsszót yield, visszaadja a kifejezés értékét yield, és a következő híváskor közvetlenül a yield. Például a Fibonacci szekvencia kiszámításához írhatunk:
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))A modul itertoolslehetővé teszi a generátorok manipulálását. Például az első 10 elem kibontása az előző generátorból:
import itertools list(itertools.islice(gen_fibonacci(), 10)) # renvoie [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]A Python 3.3 óta lehetséges egy generátor előállítása rekurzív függvényből, köszönhetően a szintaxisnak yield from, amely a PEP 380-ban jelent meg, és amely a számítást egy algenerátorra „delegálja”. A következő példa kiszámítja a királynők permutációit, amelyek megfelelnek a nyolc királynő problémájának megoldásának, amelyet egy n × n méretű sakktáblára nyújtottak.
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 92Lehet, hogy egy készítő ugyanúgy néz ki, mint egy függvény, amely listát ad vissza, de az összes elemét tartalmazó listával ellentétben az építő egyenként kiszámolja az elemeit .
Így a tesztet 36 in [n * n for n in range(10)]a teljes számítással ellátott listán hajtják végre, míg 36 in (n * n for n in range(10))a generátorral működő inben a négyzetek kiszámítása leáll, amint 36 megtalálható. Meg tudjuk győzni magunkat, ezt n * na helyette egy függvényhívás előállítására szegélyhatást , például megjelenik a képernyőn.
A szótárak ( hash táblákkal kifejlesztett asszociatív tároló) intenzív használatának köszönhetően a Python lehetővé teszi a nyelv különféle tárgyainak felfedezését ( introspekció ) és bizonyos esetekben azok módosítását ( közbenjárás ).
A gépelés a fordításkor nincs ellenőrizve. A Python kacsa tipizálást használ : futás közben, ha egy objektumon meghívott metódusnak ugyanaz az aláírása, mint az ezen objektumon deklarált metódusnak, akkor az utóbbi metódust futtatják. Ezért egy objektumon nem létező módszer meghívása meghiúsul, vagyis a kérdéses objektum nem a megfelelő típusú. A statikus gépelés hiánya ellenére a Python erőteljesen be van írva, és tiltja az értelmetlen műveleteket (például szám hozzáadása egy karakterlánchoz) ahelyett, hogy némán megpróbálná értelmes formává konvertálni. A Python funkciókat kínál a változók másik típusba történő átalakításához:
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 !'A Python statikus gépelési mechanizmust is biztosít az osztályattribútumokhoz a vonás API vagy a dekorátorok tervezési mintájának felhasználásával .
MegjegyzésekA 3.0-s verzió óta a Python a változók kommentárját kínálja a függvényekben (a PEP 3107-ben bevezetve). Ez lehetővé teszi, hogy a kódot olvashatóbbá tegye anélkül, hogy statikus gépelési megoldásként működne, mivel semmi sem kötelezi ezeket a megjegyzéseket.
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 fonctionnelEzenkívül a 3.5-ös verzió óta a Python kínálja a gépelési modult (bevezetve a PEP 484-be).
from typing import List def split_string(string: str) -> List[str]: return string.split(" ") ÖsszeállításA Python modulok statikus elemzését olyan eszközökkel lehet elvégezni, mint a Pylint, a mypy vagy a PyChecker. Végrehajtás nélkül ezek az eszközök hibákat vagy elavult konstrukciókat észlelnek. Például egy osztály, amely egy absztrakt osztályból örököl és nem definiálja újra az absztrakt módszereket, vagy a deklarálás előtt használt változókat, vagy a metóduson kívül deklarált példányattribútumok __init__.
Lehetőség van Python köztes kód ( bytecode ) előállítására is.
Az olyan eszközök, mint a PyInstaller vagy mások, például a cx_Freeze a Unix alatt , a Windows és a macOS , a py2app a macOS alatt és a py2exe a Windows alatt, lehetővé teszik egy Python program "lefordítását" egy futtatható fájl formájában, amely a programot és a Python tolmácsot tartalmazza.
A program nem fut gyorsabban (nem gépi kódként állítják össze), de ez nagymértékben leegyszerűsíti terjesztését, különösen azokon a gépeken, ahol nincs telepítve a Python tolmács.
A Pythonban minden objektum , abban az értelemben, hogy egy változó tartalmazhat hivatkozást a nyelv által kezelt összes elemre: számokra, módszerekre, modulokra stb. . Mielőtt azonban 2.2-es verzió, osztályok és osztály példányok voltak speciális típusú objektum, ami azt jelentette, hogy például lehetetlen levezetni a saját alosztály a lista objektum .
MódA Python objektummodelljét a Modula-3 ihlette. Ezek között a kölcsönök között szerepel az a kötelezettség, hogy az aktuális objektum példányát, hagyományos nevén én-t kell deklarálni a módszerek első argumentumaként, és minden alkalommal szeretnénk hozzáférni ennek a példának az adataihoz a módszer törzsében. Ez a gyakorlat nem természetes a programozók jön például C ++ vagy Java, a dús önálló hogy gyakran kritizálták, hogy a vizuális szennyezés, amely hátráltatja az olvasó a kódot. Éppen ellenkezőleg, a kifejezett én promóterei úgy vélik, hogy elkerüli a tagadatok elnevezési szokásait, és leegyszerűsíti azokat a feladatokat, mint például egy szuperosztályos módszer meghívása vagy a tagadatok közötti egyértelműség megoldása.
A Python háromféle módszert ismer fel:
A nyelv nagyon korlátozottan támogatja a kapszulázást . Nincs, mint például a Java-ban, az akadálymentesítés ellenőrzése olyan kulcsszavakkal, mint a protectedvagy private.
A Python filozófiája, hogy fogalmilag megkülönbözteti a kapszulázást az információ elrejtésétől. Az információs maszkolás célja a csalárd felhasználás megakadályozása, ez a számítógép biztonságát jelenti . A bástya modul a szabványos könyvtár, mely már nem tartjuk a legújabb változata a nyelvet, így lehetővé tette, hogy irányítsa a hozzáférést az attribútumok az objektum keretein belül korlátozott végrehajtási környezet.
A tokozás egy szoftverfejlesztési kérdés. A Python fejlesztők szlogenje: mindannyian egyetértő felnőttek vagyunk itt . Úgy vélik, hogy elég, ha konvenciók megírásával jelzik az interfészek nyilvános részeit, és hogy az objektumok felhasználóinak kell megfelelniük ezeknek a megállapodásoknak vagy vállalniuk felelősségüket. A szokás az, hogy a privát tagokat aláhúzással látják el. A nyelv emellett lehetővé teszi a kettős aláhúzás használatát a névütközések elkerülése érdekében, az adatok nevének automatikus előtagozásával annak az osztálynak a nevéhez, ahol meg van határozva.
A függvény használata property()lehetővé teszi olyan tulajdonságok definiálását, amelyek célja a metódusok segítségével az adattaghoz való hozzáférések lehallgatása. Ez szükségtelenné teszi, hogy rendszeresen meghatározzák accessors és elrejteni adatok gyakori C ++ például.
ÖrökségA Python támogatja a többszörös öröklést . A 2.3-as verzió óta a Dylan nyelvből származó C3 (en) algoritmust használja a módszer felbontási sorrendjének ( MRO ) megoldására. A korábbi verziók mély bejárási algoritmust használtak, ami problémákat okozott egy gyémánt örökség esetén .
A Python nagy szabványos könyvtárral rendelkezik , amely sokféle feladathoz alkalmas eszközöket kínál. A standard könyvtárban lévő modulok száma növelhető C vagy Python nyelven írt speciális modulokkal.
A szabványos könyvtár különösen jól megtervezett az internetet használó alkalmazások írására, nagyszámú támogatott szabványos formátummal és protokollal (például MIME és HTTP ). A grafikus interfészek létrehozására és a reguláris kifejezések manipulálására szolgáló modulok is rendelkezésre állnak. A Python tartalmaz egy keretet is az egység teszteléséhez ( unittestkorábban PyUnit a 2.1-es verzió előtt), hogy átfogó tesztcsomagokat hozzon létre.
Bár minden programozó elfogadhatja a saját Python-kód írási konvencióit, Guido van Rossum elérhetővé tett egy útmutatót, amelyet "PEP 8" néven emlegetnek. 2001-ben jelent meg, és továbbra is fenntartják a nyelv változásaihoz való alkalmazkodást. A Google útmutatót is kínál.
A Pythonban számos modul áll rendelkezésre grafikus felülettel rendelkező szoftverek létrehozására . A leggyakoribb a Tkinter . Ez a modul sok alkalmazásra alkalmas, és a legtöbb esetben elegendőnek tekinthető. Más modulokat azonban azért hoztak létre, hogy képesek legyenek összekapcsolni a Pythont más szoftverkönyvtárakkal (" toolkit "), több funkcióval, a jobb integráció érdekében a használt operációs rendszerrel , vagy egyszerűen csak a Python kedvenc könyvtárával történő használatához. Egyes programozók valóban fájdalmasabbnak tartják a Tkinter használatát, mint más könyvtárak. Ezek a további modulok nem részei a standard könyvtárnak, ezért külön kell beszerezni őket.
A fő modulok és hozzáférést biztosít a GUI könyvtárak Tkinter és PMW (Python megawidgets) a Tk , wxPython a wxWidgets , PyGTK a GTK + , PyQt és PySide a Qt , és végül FxPy a FOX Toolkit . Van is egy adaptációja a SDL könyvtár : Pygame , egy kötő a SFML : PySFML, valamint a könyvtár írásos különösen Python: Pyglet (en) .
Ezenkívül Silverlight alkalmazásokat lehet létrehozni Pythonban az IronPython platformon .
Guido van Rossum a Python fő szerzője, és a Python állandó központi döntéshozójának szerepét humorosan elismeri a „ Jóindulatú diktátor az életért ” ( BDFL) cím. Mivel2018. július, Guido van Rossum állandó vakációnak nyilvánította magát a BDFL szerepéből. A rendező nyelvi tanácsba történő jelölését is törölte2019 november.
Őt egy olyan fejlesztőkből álló csapat segíti, akik írási hozzáféréssel rendelkeznek a CPython tárházhoz, és koordinálják magukat a python-dev levelezőlistán. Főleg az alapnyelvvel és a könyvtárral foglalkoznak. Időnként hozzájárulást kapnak más Python fejlesztőktől a RoundF hibakezelő platformon keresztül , amely a SourceForge-ot váltotta fel .
A harmadik féltől származó könyvtárak felhasználói vagy fejlesztői számos más forrást használnak. A Python körüli fő általános média az angol nyelvű Usenet fórum, a comp.lang.python.
A Monty Pythonra való utalások meglehetősen gyakoriak. Python oktató gyakran használják a szavakat a spam és a tojás , mint egy metasyntax változó . Ez egy utalás a Monty Python Spam vázlatára , ahol két mecénás megkísérli az étkezés megrendelését olyan kártya használatával, amelynek gyakorlatilag minden ételében SPAM márkájú sonka konzerv van. Ezt a vázlatot hivatkozásként vették igénybe a kéretlen e-mailek jelölésére is .
Számos vállalat vagy szervezet megemlíti hivatalos webhelyén, hogy Python-t használ:
A Python a számos ingyenes szoftver parancsnyelve is:
És kereskedelmi:
A Pythont programozási nyelvként használják a közép- és felsőoktatásban, különösen Franciaországban. 2013 óta ott tanítják, a Scilabbal egy időben, az előkészítő természettudományi órákon minden hallgatónak a közös mag (informatika mindenki számára) részeként. Korábban az informatikai oktatás egy lehetőségre korlátozódott MP-ben, az oktatás Caml vagy Pascal nyelven folyt . Ez a lehetőség még mindig létezik, de Pascalt a versenyek 2015-ös ülésszakától elhagyták, így csak Caml maradt ebben a tanításban. Az első versenytesztek a Python nyelvén szintén a 2015-ös ülés tesztjei.
A CPython nevű referencia verzió mellett (mivel C nyelven íródott ) vannak más rendszerek is, amelyek a Python nyelvet valósítják meg:
Ezek a más verziók nem feltétlenül profitálnak a referencia verzióhoz C-ben írt függvények teljes könyvtárából, és nem is a legújabb nyelvi változásokból.
Különböző disztribúciók állnak rendelkezésre, amelyek néha sok csomagot tartalmaznak egy adott tartományhoz:
Ezek nem különböznek a Python nyelv implementációitól : CPythonon alapulnak, de számos könyvtárral vannak előre telepítve.
Változat | Kiadási dátum | A támogatás vége | Új érkezők |
---|---|---|---|
1,5 (.2) | 1998. január 3 | 1999. április 13 |
|
1.6 | 2000. szeptember 5 | 2000. szeptember |
|
2.0 | 2000. október 16 | 2001. június 22 |
|
2.1 | 2001. április 15 | 2002. április 9 |
|
2.2 | 2001. december 21 | 2003. május 30 |
|
2.3 | 2003. június 29 | 2008. március 11 | |
2.4 | 2004. november 30 | 2008. december 19 |
|
2.5 | 2006. szeptember 19 | 2011. május 26 |
|
2.6 | 1 st október 2008-as | 2010. augusztus 24 (biztonsági frissítések 2007 - ig) 2013. október 29) |
|
2.7 | 2010. július 3 | 1 st január 2020-as |
|
3.0 | 2008. december 3 | 2009. február 13 |
További részletek : PEP 3100 |
3.1 | 2009. június 27 | 2011. június 12 (biztonsági frissítések 2007 - ig) 2012. június) |
|
3.2 | 2011. február 20 | 2013. május 13 (biztonsági frissítések 2007 - ig) 2016. február 20) |
|
3.3 | 2012. szeptember 29 | 2014. március 8 (biztonsági frissítések 2007 - ig) 2017. szeptember 29) |
|
3.4 | 2014. március 16 | 2017. augusztus 9 (biztonsági frissítések 2007 - ig) 2019. március 18) |
|
3.5 | 2015. szeptember 13 | 2017. augusztus 8 (biztonsági frissítések 2007 - ig) 2020. szeptember 13) |
|
3.6 | 2016. december 23 | 2018. december 24 (biztonsági frissítések 2007 - ig) 2021. december) |
|
3.7 | 2018. január 31 | 2020. június 27 (biztonsági frissítések 2007 - ig) 2023. június) |
|
3.8 | 2019. október 14 | 2021. április (biztonsági frissítések 2007 - ig) 2024. október) |
|
3.9 | 2020. október 5 | 2022 május (biztonsági frissítések 2007 - ig) 2025 október) |
|
A Python Enhancement javaslatok (vagy PEP: Python Enhancement javaslat ) olyan szöveges dokumentumok, amelyek a Python fejlesztésének útját szolgálják, és megelőzik annak minden módosítását. A PEP fejlesztésorientált javaslat (PEP folyamat) , technikai javaslat (Standard Track PEP) vagy egyszerű ajánlás ( Információs PEP ). A legismertebb PEP a PEP 8 a kódstílus útmutatójához.
2009-ben ez a Python 3. verziója, amely egyre inkább felváltja a 2. verziót (a projekt eredetileg "Python 3000" vagy "Py3K" nevet viselte), anélkül, hogy visszafelé kompatibilis lenne a 2.x verzió sorozatával, annak érdekében, hogy kiküszöböljék a a nyelv. A projekt irányelve az volt, hogy "csökkentse a Python redundanciáját az elavult módszerek eltávolításával". Megjelent a Python 3.0a1, az első alfa verzió2007. augusztus 31, és van egy PEP, amely részletezi a tervezett változásokat, valamint egy oldal, amely a programozókat irányítja a Python 2 vagy 3 kiválasztásában.
Számológépek középiskolás diákok számára (beleértve a Casio , NumWorks , Texas Instruments ...), és támogatják a Python munkáját a Python 3-ban. Ezek a számológépek programokat cserélhetnek személyi számítógépekkel .
FilozófiaA Python 3-t ugyanazzal a filozófiával fejlesztették ki, mint a korábbi verzióiban, így a Python filozófiájára való bármilyen hivatkozás a 3. verzióra is vonatkozik, azonban a nyelv végül számos felesleges módszert felhalmozott. A redundancia megszüntetésére törekedve a nyelven és annak moduljaiban a Python 3 követi a „Csak egy módszer legyen optimális és természetes mindenre” című Python útmutatást .
A Python 3 továbbra is multi-paradigma nyelv. A programozók továbbra is választhatnak az objektumorientáció, a strukturált programozás, a funkcionális programozás és más paradigmák között; A Python 3-at természetesebben akarják használni, mint a 2.x verziókban, bár printa Python 2-vel ellentétben zárójeleket kell használni.
Tervezés és kompatibilitásMegjelent a Python 3.0a1, a Python 3.0 első alfa verziója 2007. augusztus 31. A Python 2.x és 3.x verziói párhuzamosan kerülnek kiadásra több fejlesztési ciklusra, amelyek során a 2.x sorozat elsősorban a kompatibilitás érdekében marad, beleértve a Python 3.x-ből importált néhány funkciót. A PEP 3000 több információt tartalmaz a verzió kiadási folyamatáról.
A Perl 6-hoz hasonlóan a Python 3.0 is megbontja a visszamenőleges kompatibilitást. A 2.x sorozathoz írt kód használata nem garantált a Python 3.0 használatával. Ez utóbbi alapvető változásokat hoz, például a teljes áttérést az Unicode-ra, és emiatt szükséges különbséget tenni a húrok és a "bájt" objektumok között. A szótárszerű objektumok bizonyos metódusaihoz társított dinamikus gépelés zökkenőmentes átmenetet eredményez a Python 2.x-ről a Python 3.0-ra. A "2to3" nevű eszköz lefordítja a 2.x verziók nagy részét 3.x verziókra, és speciális megjegyzésekkel és figyelmeztetésekkel jelzi a befejezést igénylő kódterületeket. A megjelenés előtti 2to3-nak őszintén láthatóan sikerül elérnie a helyes fordítást. A Python 2.x-ről a Python 3.x-re történő áttérés részeként a PEP 3000 azt javasolja, hogy az eredeti kódot tartsák meg a módosítások alapjául, és fordítsák le a 3.x platformra a 2to3 használatával.
A Python 2.6 elindítja a visszamenőleges kompatibilitást, valamint egy "figyelmeztető" módot, amely felhívja a figyelmet a Python 3-ra való áttérés lehetséges átállási problémáira.
A Python Androidra és iPhone-ra alkalmas verziói vannak a 2.5 vagy 2.6 verzióban. Elérhető a iOS Jailbreak az iOS köszönhetően „setup eszközök”, valamint androidos köszönhetően SL4A amely még biztosítja annak lehetőségét, hogy a kis grafikus felületek köszönhetően a „android” modulban, és amely lehetővé teszi, hogy küldjön SMS-t , hogy kapcsolja be a kamerát, vagy hogy rezegjen a telefon. A következő néhány sor megmutatja, hogyan kell ezt megtenni:
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 secondesA Python port a Blackberry terminálokon megjelent 2012. június, a BlackBerry OS 10 rendszerhez2012. szeptember"BlackBerry-Tart" néven, az angol szójáték miatt: a "torta" könnyebb, mint a "pite ", utalva a hagyományos " almás pite " -re. A Python 3.2.2-n alapul.