Movatterモバイル変換


[0]ホーム

URL:


Vés al contingut
Viquipèdial'Enciclopèdia Lliure
Cerca

Python

De la Viquipèdia, l'enciclopèdia lliure
Infotaula de llenguatge de programacióPython
Tipusllenguatge de programació orientat a objectes,llenguatge de programació dinàmic,llenguatge de programació funcional,llenguatge script,llenguatge de programació multiparadigma,llenguatge de programació imperatiu,llenguatge interpretat,llenguatge de programació d'alt nivell,llenguatge de programació,Sistema d'execució,llenguatge de regles fora de joc,llenguatge de programació estricte,programari de codi obert iprogramariModifica el valor a Wikidata
Data de creació20 febrer 1991Modifica el valor a Wikidata
DissenyGuido van RossumModifica el valor a Wikidata
DesenvolupadorPython Software Foundation iGuido van RossumModifica el valor a Wikidata
EpònimMonty PythonModifica el valor a Wikidata
Paradigma de programacióprogramació funcional,programació orientada a objectes,dynamic programming(en)Tradueix,llenguatge imperatiu iprogramació multiparadigmaModifica el valor a Wikidata
Darrera versió estable3.14.3 ()
3.15.0 alpha 5 ()Modifica el valor a Wikidata
Tipus de dadesForta, dinàmica
DialectesStackless Python,RPython,Cython
Llenguatge de programacióPython iCModifica el valor a Wikidata
Influenciat perABC,ALGOL 68,Modula-3,C,C++,Perl,Java,Lisp,Haskell,APL,CLU,Dylan,Icon iML EstàndardModifica el valor a Wikidata
Ha influenciatRuby,Boo,Groovy
Sistema operatiumultiplataformaModifica el valor a Wikidata
LlicènciaPython Software Foundation LicenseModifica el valor a Wikidata
Etiqueta d'Stack ExchangeEtiqueta,Etiqueta,Etiqueta,Etiqueta,Etiqueta,Etiqueta,Etiqueta,Etiqueta,Etiqueta,Etiqueta,Etiqueta iEtiquetaModifica el valor a Wikidata
Pàgina webpython.orgModifica el valor a Wikidata

Python és unllenguatge de programació d'alt nivell i propòsit general molt utilitzat.[1][2][3] Va ser creat perGuido van Rossum l'any1991. La seva filosofia de disseny cerca llegibilitat en el codi i la seva sintaxi permet alsprogramadors expressarconceptes en menys línies de codi del que seria possible en llenguatges comC.[4][5] També proveeix estructures per permetre programes més entenedors tant a petita com a gran escala.[6]

Python suporta diversosparadigmes de programació, incloent-hiprogramació orientada a objectes (POO),imperativa i tambéfuncional oprocedimental. Presenta un sistema dinàmic i unagestió de la memòria automàtica. Té una gran i exhaustiva biblioteca estàndard.[7]

Com altres llenguatges de programació dinàmics, Python es fa servir sovint com unllenguatge script, però també en una àmplia gamma de contextos no-script. Amb eines desenvolupades per tercers comPy2exe,cx Freeze oPyinstaller,[8] el codi Python pot ser reduït a programes executables independents. Existeixen intèrprets de Python per moltssistemes operatius diferents.

CPython, laimplementació de referència de Python, ésprogramari lliure i de codi obert i té un model de desenvolupament basat en lacomunitat, de la mateixa manera que la major part de les altres implementacions. És controlat per l'organització sense ànim de lucre «Python Software Foundation», creada el 6 març 2001.[9] La missió de lafundació és fomentar el desenvolupament de lacomunitat Python.[10] És responsable de diversos processos dins de la comunitat, com el desenvolupament de Python, l'administració dels drets intel·lectuals i d'obtenir fons.

Història

[modifica]
Guido van Rossum, el creador de Python

Python fou creat a la darreria dels anys 80[11] perGuido van Rossum al Centrum Wiskunde & Informatica (CWI) alsPaïsos Baixos, com a successor del llenguatgeABC (que alhora havia estat inspirat enSETL),[12] capaç de gestionar excepcions i interconnectar amb elsistema operatiuAmoeba.[13] La implementació va començar el desembre de l'any1989.[14] Van Rossum va ser el principal responsable i promotor del projecte. Aquestllenguatge va ser creat amb la intenció que fos fàcil d'utilitzar i d'aprendre sense comprometre rendiment i velocitat d'execució, però elmaquinari disponible als anys 80 del segle xx en va limitar l'ús, i el projecte no va tenir el succés que se n'esperava.

El1991, Van Rossum va publicar el codi de la versió 0.9.0 aalt.sources. En aquesta etapa del desenvolupament ja hi havia classes ambherència,control d'excepcions, funcions i els tipus modulars tals comstr,list idict, entre d'altres. A més a més, en aquest llançament inicial apareixia un sistema de mòduls adoptats de Modula-3. Van Rossum descriu el mòdul com «una de les unitats més grosses de la programació de Python».[11] El model d'excepcions de Python s'assembla al de Modula-3, amb l'addició d'una clàusulaelse.[13] L'any1994 es va formar comp.lang.python, alfòrum de discussió de Python, marcant unafita en el creixement del grup d'usuaris d'aquest llenguatge.

Python va tenir la versió 1.0 l'any 1994. Una característica d'aquest llançament van ser les eines de laprogramació funcional:lambda,reduce,filter imap. Van Rossum va explicar que 12 anys abans Python ja havia adquirit aquestes funcions, cortesia d'un hacker informàtic,Amrit Prem, deLisp que les trobava a faltar al llenguatge i les havia posat a disposició.[15] No es fa cap menció específica de capherència de Lisp a les notes del llançament.

L'última versió alliberada provinent de CWI va ser Python 1.2. L'any 1995, Van Rossum va continuar el seu treball amb Python en la Corporation for National Research Initiatives (CNRI) aReston, a l'estat nord-americà deVirginia, on va llançar diverses versions del programari.

Durant la seva estada alCorporation for National Research Initiatives (CNRI), Van Rossum va proposar la iniciativaComputer Programming for Everybody (CP4E), per a fer laprogramació més accessible per a més gent, amb un ‘nivell d'alfabetització’ bàsic en llenguatges de programació, similar a l'alfabetització bàsica en anglès i les habilitatsmatemàtiques necessàries per a moltstreballadors. Python va tenir un paper crucial en aquest procés a causa de la seva orientació cap a unasintaxi neta i les metes de CP4E, que presentaven similituds amb el seu predecessor ABC. El projecte fou patrocinat perDARPA.[16]

L'any2000, l'equip principal de desenvolupadors de Python es va canviar aBeOpen.com per a formar l'equip BeOpenPythonLabs. El CNRI va demanar que la versió 1.6 fos pública, i en va continuar el desenvolupament fins que l'equip que hi era dedicat va abandonar el CNRI. El programa de llançament i el de la versió 2.0 tenien una quantitat significativa de codi superposat.[17] Python 2.0 va ser el primer i únic llançament de BeOpen.com. Després que Python 2.0 fos publicat per BeOpen.com,Guido van Rossum i els altres desenvolupadors de PythonLabs es van unir en Digital Creations.

Aquesta versió del llenguatge va prendre una característica major del llenguatge de programació funcional deHaskell:list comprehensions. La sintaxi de Python per a aquesta construcció és molt similar a la de Haskell, tret per la preferència dels caràcters de puntuació en Haskell, i la preferència de Python perparaules claus alfabètiques. Python 2.0 va introduir, a més, un sistema de recol·lecció de brossa (garbage collector) capaç de recol·lectar diferències cícliques.[17]

Posteriorment a aquest doble llançament, i després que Van Rossum abandonés el CNRI per treballar amb desenvolupadors deprogramari comercial, va quedar clar que l'opció d'utilitzar Python amb software disponible sotaGNU GPL era molt desitjable. La llicència usada fins aquell moment, la Python License, incloïa una clàusula estipulant que lallicència estava governada per l'estat deVirgínia, pel que, sota l'òptica delsadvocats deFree Software Foundation (FSF), es feia incompatible amb GPL. CNRI i FSF es van relacionar per canviar la llicència de software lliure de Python per fer-la compatible amb GPL. L'any2001, Van Rossum fou premiat amb el FSF Award for the Advancement of Free Software. A partir d'aquest any, tot elcodi,documentació i especificacions afegides des de la data de llançament de la versióalfa de Python 2.1, és propietat de la Python Software Foundation (PSF), unaorganització sense ànim de lucre fundada el 2001, prenent com a model l'Apache Software Foundation.[18] Inclòs en aquest llançament va venir una implementació delscoping més semblant a les regles destatic scoping (del qualScheme és l'originador).[19]

Unainnovació major en Python 2.2 fou la unificació dels tipus de Python (tipus escrits enC), iclasses (tipus escrits en Python) dins d'unajerarquia. Aquesta unificació va a conseguir un model d'objectes de Python pur i consistent.[20] També van ser agregats elsgeneradors que van ser inspirats pel llenguatge Icon.[20] Les addicions a la biblioteca estàndard de Python i les decisions sintàctiques van ser influenciades fortament perJava en alguns casos: elpackage logging,[21] introduït en la versió 2.3, està basat enlog4j; el parserSAX, introduït en 2.0; elpackage threading,[22] on la seva classeThread exposa unsubconjunt de lainterfície de la classehomònima a Java.

L'any2007, el projecte CP4E va romandre inactiu, i mentre que Python intenta ser fàcil d'aprendre i no gaire antiquat en la sevasintaxi isemàntica, que el fa accessible als noprogramadors, no va implícar una preocupació activa.[23]

El 2018, Van Rossum comparteix la direcció, com a membre d'un consell directiu de cinc persones.[24][25] El gener de 2019 els desenvolupadors actius delnucli de Python van escollir Brett Cannon, Nick Coghlan, Barry Warsaw, Carol Willing i Van Rossum com un “Consell Directiu” decinc membres per a continuar la direcció del projecte. Van Rossum és, doncs, l'autor principal de Python i des del 2019 continua decidint el rumb del llenguatge.[25]

La missió de la fundació és fomentar el desenvolupament de la comunitat de Python.[26] Aquest organisme és responsable de diversos processos dins de la comunitat, com el desenvolupament de Python, l'administració delsdrets intel·lectuals i l'obtenció de fons. Python compta una llicència de codi obert, denominadaPython Software Foundation License,[18] la qual és compatible amb la llicència pública general de GNU a partir de la versió 2.1.1, i incompatible amb versions anteriors.

Sobre l'origen de Python, el mateix Van Rossum va escriure l'any 1996:[27]

«Fa uns sis anys, pels volts del desembre de 1989, cercava un projecte de programació com a "hobby" que em tingués ocupat durant les setmanes de Nadal. La meva oficina… estaria tancada, però tenia una ordinador personal, i poca cosa més a les mans. Vaig decidir de escriure un intèrpret pel nou llenguatge script al qual havia pensant darrerament: un descendent d'ABC ABC que apel·laria aUnix/Chackers. Vaig triar Python com a nom del projecte, des d'un estat d'ànim lleugerament irreverent (i un gran fan deMonty Python's Flying Circus)»
Guido van Rossum. «Foreword for "Programming Python" (1st ed.)», 1996.

Versions destacables del llenguatge:

  • Python 2.0 va ser llançat el 16 d'octubre del 2000 amb moltes novetats importants, incloent ungarbage collector detector de cicles i suport per aUnicode,[28] així com un canvi en el nom de la llicència aPython Software Foundation License.
  • Python 3.0 va ser llançat el 3 de desembre de2008. Va ser una important revisió del llenguatge, la qual no és totalment retrocompatible.[29] Moltes de les seves característiques importants van ser portades a les versions de Python 2.6.x[30] i 2.7.x. Els llançaments de Python 3 inclouen la utilitat2to3, queautomatitza (com a mínim parcialment) la traducció del codi de Python 2 a Python 3.[31]

Informació sobre versions recents:

  • Python 3.6 va portar novetats relacionades amb la implementació deCPython, tals com la reestructuració dels elements de tipusdict i que la variable d'entornpythonmalloc es pogués utilitzar per fer depuració de la memòria de l'intèrpret.[32] També va aportar novetats quant a la biblioteca estàndard, millores enseguretat, millores per a entorns de programació ensistema operatiuWindows. Alguns d'aquests canvis importants van ser la declaració de tipus de variables sense necessitat de donar-les valors inicials, millores en la velocitat d'execució de generadors, canvi en la codificació delsistema de fitxers i la consola de Windows aUTF-8 i nous protocols per als camins de fitxers del sistema.[33]
  • Python 3.7 va portar novetats en eldepurador tals com la incorporació de la funció internabreakpoint, el nou mòdul dedataclasses, noves APIs per a memòria local delsthreads d'execució, noves funcions per al mòdultime i diccionaris ordenats per definició.[34]
  • La versió 3.8 del llenguatge va suposar una breu actualització i va aportar novetats, sobretot quant a expressions d'assignació i nous protocols de crida per aCPython. Aquesta versió va ser la primera en no ser dirigida exclusivament perGuido van Rossum, sinó pel mencionat consell directiu dels cinc principals desenvolupadors.[25][35]
  • Python 3.9 és la següent versió del llenguatge, i algunes novetats que ja incorpora de manera estable en la seva versióalfa són relacionades amb operadors de diccionaris, millora de mòduls, optimitzacions per a list comprehensions i canvis en la construcció interna i l'API de C.[36]
  • Python 3.10 és la versió més recent del llenguatge, les novetats més destacades d'aquesta versió és la millora en el seguiment d'errors, la codificació automàtica de text i la iteració asíncrona.

La data de final d'ús per a Python 2.7 va ser inicialment establerta al 2015, però va ser posposada a2020, tot i sabent que una gran part del codi existent en aquesta versió delllenguatge no serà fàcilment portada a Python 3. El 2019, una versió preliminar de Python 4.0 es desenvolupa, i Van Rossum adverteix que no serà tan compatible amb Python 3.0 com aquesta versió ho va ser per a 2.0.[37][Cal actualitzar]

Característiques i filosofia

[modifica]

Descripció de funcionalitats

[modifica]

Python és un llenguatge de programaciómultiparadigma. Això significa que, més que no pas forçar alsprogramadors a adoptar unestil particular de programació, aquest llenguatge permet diversos estils: dona suport alhora a laprogramació orientada a objectes i laprogramació estructurada, i molts components característiques també suporten laprogramació funcional i laprogramació orientada a aspectes hi-inclòs per metaprogramació[38] i metaobjectes (mètodes màgics).[39] També són suportats molts altresparadigmes a través d'extensions, incloent disseny per contracte[40][41] iprogramació lògica.[42]

Python utilitzamecanografia dinàmica, una combinació de recompte de referència i un recol·lector de brossa detector de cicles per al tractament de lamemòria. També compta amb resolució dinàmica de noms, que lliga els noms del mètode i lavariable durant l'execució delprograma (també anomenat enllaç dinàmic de mètodes).

Eldisseny de Python ofereix suport per a la Programació funcional en la tradicióLisp. Les funcionsfilter,map, ireduce estan integrades en el llenguatge, així com leslist comprehensions, els diccionaris iconjunts i les expressions generadores. La biblioteca estàndard té dos mòduls (itertools i functools) que implementen eines funcionals que venen manllevades dels llenguatges de programacióHaskell iStandard ML.[16]

Paradigmes

[modifica]

Python fou dissenyat per ser altament extensible, més que no pas tenir totes les seves funcionalitats construïdes en el nucli. Aquesta modularitat compacta ha fet que sigui particularment popular com un mitjà d'addició d'interfícies programables a aplicacions existents. Un dels objectius del disseny delllenguatge és la facilitat de l'extensió, de manera que es poden escriure nous mòduls fàcilment en altres llenguatges com araC oC++. La visió deVan Rossum d'un llenguatge amb petit nucli amb una biblioteca estàndard gran i unintèrpret fàcilment extensible, van mantenir el projecte allunyat d'una de les seves frustracions ambABC, que se centra precisament en elparadigma oposat.[11]

De la mateixa manera, Python aposta per unasintaxi igramàtica més simples i amb menys dificultats, donant així alsdesenvolupadors una oportunitat per dur a terme la seva metodologia de programació. A diferència dellema dePerl “hi ha més d'una manera de fer-ho”, Python recolza aquella filosofia de disseny que diu “hi hauria d'haver una manera òbvia —i preferiblement només una— de fer-ho”. Alex Martelli, membre de la Python Software Foundation iautor delllibre Python, escriu que “descriure quelcom com intel·ligent no es considera un compliment en lacultura de Python”.[43]

Els desenvolupadors de Python aposten per evitar l'optimització prematura, i rebutgen les modificacions en el llenguatge de parts no crítiques de la implementació de referènciaCPython, ja que oferirien increments marginals en velocitat amb el cost de la claredat delcodi.[44] Quan la velocitat és important, el programador de Python pot mourefuncions de temps crític a aquests mencionats mòduls d'extensió escrits en altres llenguatges, o bé utilitzarPyPy, que és uncompilador sobre la marxa o just-in-time compiler.Cython també és una opció, atès que tradueix el programa directament de Python aC i fa crides directes a l'API de C al seu intèrpret de Python. Aquesta última opció transforma el codi Python al el llenguatge C, proporcionant no només més velocitat d'execució sinó també la possibilitat d'utilitzar característiques pròpies de C, com ara tipar les variables, usar memoryviews, ús de decoradors etc.

Un objectiu important delsdesenvolupadors de Python és mantenir el llenguatge viu i en funcionament, a través de fer-lo agradable per alsprogramadors. Queda reflectit al nom del llenguatge —que és un tribut a la comèdiabritànicaMonty Python[45] i en enfocaments lúdics detutorials i materials de referència, com per exemple fa referència aspam and eggs (d'un fragment famós de Monty Python) en comptes delsfoo i bar que trobem estàndards en altres llenguatges.[46][47]

La filosofia del nucli del llenguatge queda resumida en el documentThe Zen of Python (PEP 20), on s'inclouen aforismes com els següents:[48]

  • Bonic és millor que lleig
  • Explícit és millor que implícit
  • Simple és millor que complex
  • Complex és millor que complicat
  • Pla és millor que anidat
  • Dispers és millor que dens
  • La llegibilitat compta
  • Els casos especials no són tan importants com per trencar les regles
  • La practicitat guanya la puresa
  • Els errors mai haurien de deixar-se passar silenciosament
  • Tret que hagin estat silenciats explícitament
  • Davant de l'ambigüitat, rebutja la temptació d'endevinar
  • Hi hauria d'haver una manera òbvia —i preferiblement només una— de fer-ho
  • Tot i que aquella manera pot no ser òbvia al principi, tret que vostè siguineerlandès
  • Ara es millor que mai
  • Tot i que mai sovint és millor que ara mateix
  • Si la implementació és difícil d'explicar, és una mala idea
  • Si la implementació és fàcil d'explicar, pot ser que sigui una bona idea
  • Els espais de noms (namespaces) són una gran idea, fem més coses d'aquest estil!

Un neologisme comú a lacomunitat de Python éspythonià opythonic, que pot tenir una gran varietat de significats relacionats amb l'estil de programació. Diem que el codi éspythonià quan en ell s'utilitzen bé elsidiomes de Python, com ara la naturalesa delcodi o la mostra de fluïdesa en el llenguatge, que van en concordància amb lafilosofia minimalista i l'èmfasi en la llegibilitat de Python. Per altra banda, el codi que és difícil d'entendre o es llegeix com una vaga transcripció d'un altre llenguatge de programació, rep el nom deno pythonià ounpythonic. Seguint aquesta dinàmica, elsusuaris i admiradors de Python, especialment aquells que destaquen per tenir coneixements o experiència en elllenguatge, acostumen a ser anomenatspythonistes.[49][50]

Sintaxi i semàntica

[modifica]

El Python està dissenyat per ser un llenguatge molt visual, i, com a característica principal i distintiva, utilitzasagnat. Això és poc comú enllenguatges de programació, ja que molts (com elC oJava) utilitzen delimitadors com poden ser{ i}. Això el fa més llegible.

Sagnat

[modifica]

El sagnat és la característica més visible del Python. Al contrari que en altres llenguatges, és obligatori i s'utilitza per delimitar blocs. Un augment en el sagnat, si va precedit per una declaració correcta, significa l'inici d'un nou bloc; la disminució significa el final del bloc actual.[51] S'inclou una comparació amb el Java per exemplificar-ho.

Hola món en PythonHola món en Java
defmain():print("Hola, món!")
publicclassHolaMon{publicstaticvoidmain(String[]args){System.out.println("Hola, món!");}}

o bé: (nota: aquesta sintaxi és possible. Tanmateix, no s'acostuma a utilitzar a causa de la poca llegibilitat).

publicclassHolaMon{publicstaticvoidmain(String[]args){System.out.println("Hola, món!");}}

Instruccions

[modifica]

Algunes de les instruccions de Python són:

  • Lainstruccióif, que executa un bloc de codi si es compleix una condició. Relacionat amb l'if existeix l'else, que executa un bloc de codi si no es compleix una condició i l'elif (contracció d'else-if enanglès:si no-si en català), que executa un bloc de codi si no es compleix una condició però si una altra.
    # Comparativa entre if, elif i else:x=3ifx==0:# Si x és 0print('x és 0')elifx==2:# Si x és 2print('x és 2')else:# Si x no és 0 ni 2print('x és un altre número')
  • La instrucciófor, que itera sobre un objecte iterable, com per exemple una llista. Per cada iteració, executa un bloc de codi.
  • Lainstrucciówhile, que executa un bloc de codi sempre que es compleixi una condició.
  • La instrucciótry, que permet el maneig d'excepcions ocorregudes dins d'un bloc de codi. Requereix la instruccióexcept, que especifica quines excepcions s'han de tractar. També existeix la instrucciófinally, que s'executa sempre acabi al final.
  • Lainstruccióclass, que crea una classe. S'utilitza enprogramació orientada a objectes.
  • La instrucciódef, que defineix unasubrutina o unmètode (funció).
  • La instrucciówith (a partir del Python 2.6).
  • La instrucciópass, que no efectua cap operació i es pot utilitzar en lloc d'un bloc de codi.
  • La instruccióassert, que s'utilitza endepuració per comprovar que es compleixin certes condicions.
  • La instruccióyield, que retorna un valor per ser utilitzat en un generador.

Expressions

[modifica]

Algunes de les expressions de Python són similars a altres llenguatges com Java i C, mentre que d'altres no ho són:

  • Suma, resta i multiplicació són el mateix, però ladivisió no. Hi ha dos tipus de divisions en Python. Divisió sencera// i divisió de punt flotant/.[52] A més a més, Python va afegir** com a operador per exponenciació. Per trobar l'mòdul d'una divisió, és a dir, el residu existeix l'operador%.
  • Des de Python 3.5,@es va introduir aquest nou operador, destinat a ser utilitzat per biblioteques comNumPy per a lamultiplicació de matrius.[53][54]
  • En el llenguatge Python,== es compara per valor, mentre que Java compara números per valor[55] i els objectes per referència.[56] L' operadoris de Python es pot utilitzar per comparar identitats d'objectes. En Python les comparacions es poden fer encadenades, per exemplea <= b <= c. Un altre operador és!= que significadiferent, és a dir,a != b significaa diferent deb.
  • Python utilitza les paraulesand,or,not en els operadors booleans en lloc del simbòlic&&,||,! utilitzats a Java i C.
  • Python té un tipus d'expressió anomenadaList comprehension. Python 2.4 va estendre aquesta expressió amb una expressió més general anomenadaexpressió generadora.[57]
  • Les expressions condicionals de Python s'escriuen comx if c else y[58] això significa que valx en cas que siguic sino valy y [77].
  • Python fa una distinció entrellistes ituples. Les llistes s'escriuen com[1,2,3], són mutables i no es poden utilitzar com a clau d'un diccionari, ya que les claus dels diccionaris en Python han de ser inmutables. Les tuples s'escriuen com(1,2,3), són inmutables i, per tant, si es poden utilitzar com a clau d'un diccionari de Python, només si tots els elements de la tupla són inmutables. L'operador+ permet concatenar dos tuples, però sense modificar el contingut de les tuples sino que crea una nova amb el contingut de la primera i de la segona tupla.[59]
  • Python té diferents tipus decadenes de caràcter:
    • Cadenes delimitades per cometes simples o dobles. A diferència delsshells d'Unix, els llenguatges influenciats perPerl, les cometes simples i dobles funcionen de manera idèntica.[60]
    • Cadenes de cometes triples, que comencen i terminen en una sèrie de tres cometes simples o dobles, permeten utilitzar varies línies per escriure.
  • A més de lesllistes ituples, Python conté un tipus d'estructura de dades anomenadadiccionaris, que està formada per elements amb formatclau:valor per a cada entrada del diccionari. Els diccionaris per definició són elements mutables, és a dir, pot variar el contingut d‘un valor en temps d'execució. En canvi, les claus dels diccionaris han de ser elements no mutables, el que significa que no podem utilitzar ni llistes ni diccionaris. El contingut d'un valor pot ser de qualsevol tipus de dada, fins i tot un diccionari.
  • En el moment d'indexar en llistes, tuples omatrius per trobar elements, Python té índex de matrius i tambéarray slicing en llistes expressats coma[index],a[inici:final] oa[inici:final:pas].[61] Els indexos negatius permeten indexar de manera inversa, és a dir, començant pel final. Els indexos positius van de0 a longitud de la llista - 1, i els indexos negatius van de -1 a -longitud de la llista. També es pot evitar escriure els indexos com per exemple si escrivima[:] retorna una copia de la llista sencera, oa[2:] retorna una copia superficial de la llista des de la posició 2 fins al final.

Mètodes

[modifica]

Els mètodes a Python són lesfuncions que es defineixen com un bloc de codi referenciat per un nom de funció, amb cosa que permetrem trucar a la funció des de fora per a la execució d'un codi intern, cada vegada que la funció sigui trucada s'executarà el codi especificat. Finalment, una vegada executat el codi es fa un return d'un o més valors. Les funcions poden rebre com a paràmetre, és a dir, dintre del parèntesi, les variables que hagin estat declarades prèviament necessàries per executar el codi especificat.[62]

L'intèrpret de Python conté una sèrie de funcions que sempre estàn disponibles perquè estàn incloses en el paquet de Python.[63]

Aquí tenim un exemple de funció que incrementa el valor de x en una unitat cada vegada que es fa la trucada a la funció.

defnom_funcio(x):x=x+1returnx

Classes

[modifica]

Python és un llenguatge d'alt nivell que inclou la programació orientada a objectes. Per dur a terme aquesta part de la programació, Python conté un mecanisme de creació declasses amb el qual cada inicialització de la classe crea una instància nova de l'objecte dissenyat. Cada instància pot tenir atributs adjunts per mantenir l'estat de l'objecte. El mètode constructor__init__() permet la inicialització d'aquests atributs de l'objecte que determinen l'estat d'aquest. Aquesta inicialització pot ser pública o privada.[64] Una vegada creat aquest mètode, cada objecte té una funcionalitat diferent i per tant, amb l'objectiu que l'objecte actuiï d'una manera o d'una altra es defineixen funcions/mètodes que contenen el codi per tal que l'objecte pugui realitzar diferents operacions. Tots els mètodes han de rebre per paràmetre la paraula clauself que fa referència a l'objecte. Amb aquesta paraula, indiquem que tot es modifica sobre l'objecte creat en la instància.[65]

Amb tot això, la sintaxi per definir una clase és:

classnom_classe:def__init__(self):#Aqui posem les característiques com per exemple:self.nom='Python'#Aqui podem definir els mètodes de funcionalitat

Escriptura

[modifica]

Python utilitza laduck typing,[66] aplicant aquest concepte a objectes. Les restriccions de tipus no es verifiquen entemps compilació, sino que les operacions en un objecte poden fallar, el que significa que l'objecte donat no es de tipus adequat. Tot i que estàescrit dinàmicament, Python estàfortament escrit, per això prohibeix les operacions que no estàn ben definides (com per exemple agregar un número a una cadena).

Python permet als programadors definir els seus propis tipus utilitzantclasses, que s'utilitzen més usualment en laprogramació orientada a objectes.

Abans de la versió 3.0, Python tenia dos tipus de classes:d'estil antic ide nou estil.[67] La sintaxis dels dos estils era la mateixa, la diferència és que la classeobject heredava directament o indirecta. Les classes d'estil antic van ser eliminades en Python 3.0

TipusMutabilitatDescripcióExemples de sintaxi
boolNoValor booleàTrueFalse
bytesNoSeqüència debytesb'Some ASCII'b"Some ASCII"bytes([119, 105, 107, 105])
complexNoNombre complex amb parts reals e imaginàries.3+2.7j
dictMatriu associativa (o diccionari) de parelles clau i valor; pot contenir tipus mixtos (claus i valors), les claus han de ser de tipus hashable{'key1': 1.0, 3: False}{}
ellipsisNoUn marcador de posició de punts suspensius per a utilitzar com índex en matriusNumPy...Ellipsis
floatNoNúmero decoma flotant deprecisió doble. La precisió depèn de la màquina, però en la pràctica és de 64 bits.3.1415927
frozensetNoResum dels tipus integrats de Python 3. Conjunt desordenat, no conté duplicats; pot contenir tipus mixtos, si són hashablesfrozenset([4.0, 'string', True])
intNoEnter de magnitud il·limitada42
listLlista, pot contenir tipus mixtos[4.0, 'string', True][]
NoneTypeNoUn objecte que representa la falta d'un valor, sovint anomenatNul en altres idiomes.None
NotImplementedTypeNoUn marcador de posició que elsoperadors sobrecarregats poden retornar per indicar tipus d'operands no compatibles.NotImplemented
rangeNoUna seqüència de números utilitzada per recórrer un número específic de vegades en buclesfor[68]range(1, 10)range(10, -5, -2)
setResum dels tipus integrats de Python 3. Conjunt desordenat, no conté duplicats; pot contenir tipus mixtos, si són hashables{4.0, 'string', True}set()
strNoUnacadena de caràcters: seqüència de punts de codiUnicode'Wikipedia'"Wikipedia"
""" Pot utilitzar varies línias """
tupleNoPot contenir tipus mixtos(4.0, 'string', True)('single element',)()

Programes d'exemple

[modifica]

Aquest programa imprimeixHola món al dispositiu de sortida predeterminat (normalment la consola),

print('Hola món')

Programa que ens mostra per pantalla quins són els elements d'una llista amb un bucle iteratiufor:

l=[1,'Paris',3,(8,9),5]foriinl:print(i)

Alternativament:

l=[1,'Paris',3,(8,9),5]longitud=len(l)foriinrange(0,longitud):print(l[i])

Programa per calcular el factorial d'un nombre natural:

n=int(input('Escriu un nombre natural, llavors el seu factorial serà mostrat per pantalla: ')ifn<0:raiseValueError('Cal que sigui un nombre natural (sencer i positiu)')fact=1;i=2whilei<=n:fact*=ii+=1print(fact)

Funció recursiva que calcula la successió de fibonacci utilitzant control d'errorsassert:

n=int(input('Introdueix un nombre natural: '))asserttype(n)==intandn>=0,'Ha de ser un nombre natural'deffibonacci(n):if(n==0):n=0elif(n==1):n=1else:n=fibonacci(n-1)+fibonacci(n-2)return(n)crida_a_funcio=fibonacci(n)print('El fibonacci del nombre '+str(n)+' és: '+str(crida_a_funcio))

Biblioteqies en Python

[modifica]

Biblioteca estàndard

[modifica]

El Python té una biblioteca estàndard gran, que tot sovint se cita com una de les principals fortaleses del Python.[69] Aporta eines ja programades que poden fer una gran varietat de funcions. S'ha dit que el Python tépiles incloses.[70] Els mòduls de la biblioteca estàndard es poden augmentar amb mòduls propis escrits en C o bé Python. Aquest fet, de poder combinar Python i C o C++, fa que sigui unllenguatge de cola molt potent entre eines i llenguatges.

La biblioteca estàndard està particularment ben encarada per escriure aplicacions dirigides a Internet, amb una gran quantitat de formats estàndards i protocols (com per exempleMIME iHTTP). També inclou mòduls per crearinterfícies gràfiques d'usuari, connectar abases de dades relacionals o manipularexpressions regulars.[71] La biblioteca estàndard, però, no és essencial per utilitzar el Python o incrustar-lo en altres aplicacions. ElBlender 2.49, per exemple, n'omet la major part.

Gestió de biblioteques

[modifica]

Tot i que la biblioteca estàndard de Python és un dels punts forts d'aquestllenguatge de programació, a causa de la quantitat d'eines que proporciona per a realitzar diferents tasques, la gran comunitat de programadors de Python ha creat amb el pas del temps biblioteques per a fer tasques específiques.

El repositori oficial de Python és el Python Package Index, abreviat com PyPI. Col·loquialment es coneix com aCheese Shop, fent referència a un sketch còmic delsMonty Python. Alberga més de 200.000 biblioteques diferents.[72] Degut a la gran varietat de biblioteques disponibles, normalment s'utilitzen gestors (package managers en anglès) per afegir aquestes biblioteques a una instal·lació de Python.

pip

[modifica]

pip és el gestorde facto de Python, la majoria d'instal·lacions utilitzen com a predeterminat aquest gestor. A partir de les distribucions Python 2.7.9 i Python 3.4, pip és inclòs com a gestor per defecte. D'acord amb el seu creador,Ian Bicking, és un acrònim de Pip Installs Packages. Per instal·lar una biblioteca s'haurà d'introduir la següent comanda per terminal (linux):

pipinstall<package>

Una de les característiques principals d'aquest gestor és la possibilitat de crearentorns virtuals amb versions específiques d'algunes biblioteques. Això permet crear còpies idèntiques de grups sencers de paquets en altres ordinadors de manera senzilla i eficient. PyPI instal·la les biblioteques com a fitxers comprimitswheel (.whl); aquests es poden instal·lar directament descomprimint-los a la carpeta site-packages de la instal·lació de Python, tot i que es recomana utilitzar un instal·lador especialitzat. El format del fitxer està establert per la proposta de millora de Python 427 (Python Enhancement Proposals) o PEP 427.[73]

conda

[modifica]

Conda és un gestor de paquets i d'entorns multiplataforma de codi obert per a qualsevol llenguatge de programació. Va ser desenvolupat per resoldre les dificultats que afrontaven els analistes de dades i la comunitat bioinformàtica al moment d'instal·lar biblioteques. Avui dia és utilitzat principalment per gestionar biblioteques de Python i R, i està recolzada per la companyia Anaconda Inc.[74] La gran diferència respecte de pip és la gestió de conflictes entre dependències de diferents biblioteques, ajustant les versions d'aquestes per evitar errors. És el gestor predeterminat de les distribucions d'Anaconda i Miniconda.

En referència a la utilització dels paquets, l'enfocament de conda és completament diferent al de pip; a diferència d'aquest, els paquets de conda són binaris, no necessiten uncompilador per a instal·lar-los, i tampoc estan limitats a Python únicament, ja que aquest és un gestor multillenguatge que funciona amb una gran varietat de llenguatges de programació. Per instal·lar una biblioteca s'haurà d'introduir la següent comanda per terminal, un cop instal·lat el gestor:[75]

condainstall<package>

Entorns de desenvolupament

[modifica]

La gran majoria de les implementacions de Python (incloentCPython) inclouen un bucle llegeix-avalua-mostra (REPL, per les seves sigles enanglès), permetent-los funcionar com unintèrpret de línies de comandes per al qual l'usuari introdueix elements seqüencialment i en rep els resultats de forma immediata.

Altres interfícies, incloentIDLE,byPython iiPython, afegeixen habilitats més enllà com ara autocompletat millorat, retenció de l'estat de la sessió acoloriment del codi per tal de facilitar-ne la visualització, comprensió i llegibilitat.

A mesura que elsescriptoris estàndard integraven entorns de desenvolupament, van anar apareixent IDEs basades en entornsweb. Alguns d'ells podrien serSageMath (pensat per desenvolupar programes de Python relacionats amb laciència i lesmatemàtiques);PythonAnywhere, un entorn basat ambIDE basat en navegador;Canopy IDE, un IDE comercial de Python fent èmfasi en lesciències de la computació;[76]Jupyter Notebook, amb unainterfície basada ennavegador web i un entorn basat en cel·les de codi, semblant a SageMath;Google Collab, amb un entorn semblant a Jupyter Notebook però amb possibilitat d'execució remota enservidors d'aquesta companyia.

Implementacions

[modifica]

CPython

[modifica]
Article principal:CPython

La implementació principal del Python, coneguda com aCPython, està escrita enC, satisfent l'estàndard C89.[77] El CPython compila els programes Python en unbytecode intermedi,[78] que posteriorment s'executa per la màquina virtual.[79] Es distribueix amb una biblioteca estàndard força gran escrita en una barreja de C i Python. Té versions per moltes plataformes, incloentMicrosoft Windows i la major part dels sistemesUnix-like moderns. Des de la seva concepció va ésser dissenyat per ser multiplataforma; el seu ús i desenvolupament en plataformes esotèriques com Aomeba, juntament amb altres més convencionals comUnix iMac OS, ha ajudat en aquest aspecte.[80] El2009 Google va començar un projecte anomenatUnladen Swallow amb l'objectiu d'incrementar la velocitat de l'interpretador Python unes cinc vegades.[81]

Desenvolupament

[modifica]

El desenvolupament de Python es desenvolupa en gran manera a través del procés de Proposta de millora de Python (PEP, "Python Enhancement Proposal" en anglés), el mecanisme principal per proposar novetats importants, recopilar aportacions de la comunitat sobre problemes i documentar decisions sobre disseny de Python.[82] L'estil de codificació de Python es troba recollit a PEP 8.[83] Els PEP excepcionals són revisats i comentats per la comunitat Python i el consell directiu.[82]

La millora del llenguatge es correspon amb el desenvolupament de la implementació de referència CPython. La llista de correu python-dev és el fòrum principal per al desenvolupament de l'idioma. Els problemes específics es discuteixen alsistema de seguiment d'errorsRoundup allotjat abugs.python.org.[84] El desenvolupament va tenir lloc inicialment en un repositori de codi font que s'allotjava aMercurial fins que Python es va traslladar aGitHub el gener de 2017.[85]

Les versions públiques de CPython es divideixen en tres tipus, que es distingeixen per quina part del número de versió s'incrementa:

  • Versions incompatibles amb versions anteriors, on s'espera que el codi es trenqui i que es porti manualment. La primera part del número de versió s'incrementa. Aquestes versions es produeixen poc sovint, per exemple, la versió 3.0 es va publicar 8 anys després de la 2.0.
  • Les versions principals, aproximadament cada 18 mesos, són en gran manera compatibles, però introdueixen noves funcions. La segona part del número de versió s'incrementa. Cada versió principal compta amb el suport de correccions durant diversos anys després del seu llançament.[86]
  • Les solucions d'Errors de programari, que no introdueixen cap novetat, es produeixen aproximadament cada 3 mesos, quan s'ha solucionat un nombre suficient d'errors des de l'últim llançament. Les vulnerabilitats de seguretat també es troben incloses en aquestes versions. La tercera i última part del número de versió s'incrementa.[87]

Python 3.9 alpha1 es va anunciar al novembre de 2019[36] i amb l'adopció d'una nova cadència de llançament anual,[88][89] el primer llançament de 3.9 està previst per a novembre de 2020.[90]

Molts candidatsalfa, beta i estables també es publiquen com a previsualitzacions i per provar-los abans dels llançaments finals. Tot i que hi ha un calendari aproximat per a cada llançament, sovint es retarden si el codi no està llest. L'equip de desenvolupament de Python supervisa l'estat del codi executant variesproves unitàries durant el desenvolupament i utilitzant el sistema d'integració contínuaBuildBot.[91]

La comunitat de desenvolupadors de Python també ha contribuït amb més de 206.000[92] mòduls de programari (a partir del 29 de novembre de 2019)índex de paquets de Python (PyPI), el dipòsit oficial de biblioteques de tercers Python.

La conferència acadèmica principal de Python ésPyCon. També hi ha programes especials de mentoria Python, com araPyladies.

Nom

[modifica]

El nom de Python deriva del grup de comèdia britànicMonty Python, que el creador de Python, Guido van Rossum, va gaudir mentre desenvolupava el llenguatge. Les referències de Monty Python apareixen sovint en el codi i cultura de Python;[93] per exemple, lesvariables metàstiques que s'utilitzen sovint en la literatura de Python sónspam ieggs en lloc delsfoobar tradicionals.[93][94] La documentació oficial de Python també conté diverses referències a les rutines de Monty Python.[95][96]

El prefix Py- s'utilitza per mostrar que alguna cosa està relacionada amb Python. Exemples de l'ús d'aquest prefix en noms d'aplicacions o biblioteques de Python inclouenPygame, una vinculació deSDL a Python (usada habitualment per crear jocs);PyQt iPyGTK, que uneixenQt iGTK a Python respectivament; iPyPy, una implementació Python escrita originalment en Python.

Generadors de documentació de l'API

[modifica]

Els generadors de documentació de l'API Python inclouen:

  • Sphinx
  • Epydoc
  • HeaderDoc
  • Pydoc

Usos

[modifica]

Des del 2003, Python s'ha classificat constantment entre els deu primers llenguatges de programació més populars de l'Índex de la comunitat de programació TIOBE on, des del febrer del 2020, és el tercer llenguatge més popular (darrere deJava iC).[97] Va ser seleccionat Llenguatge de programació de l'any el 2007, 2010 i 2018.[98]

Un estudi empíric va descobrir que els llenguatges script, com Python, són més productius que els llenguatges convencionals, com C i Java, per problemes de programació que impliquen la manipulació i la cerca de cadenes en un diccionari, i va determinar que el consum de memòria era sovint «millor que Java i no molt pitjor que C o C ++ ».[99]

Les grans organitzacions que utilitzen Python inclouenWikipedia,Google,[100]Yahoo!,[101]CERN,[102]NASA,[103]Facebook,[104]Amazon,Instagram,[105]Spotify[106] i algunes entitats més petites comILM.[107] El lloc de xarxes socialsReddit està escrit completament a Python.[108]

Python pot servir com allenguatge script per aaplicacions web, per exemple, a través demod wsgi per alservidor web Apache.[109] Amb laWeb Server Gateway Interface, una API estàndard ha evolucionat per facilitar aquestes aplicacions. Elsentorns de treball per a aplicacions web comDjango,Pylons,Pyramid,TurboGears,web2py,Tornado,Flask,Bottle iZope donen suport als desenvolupadors en el disseny i manteniment d'aplicacions complexes.Pyjs iIronPython es poden utilitzar per desenvolupar la part del client de les aplicacions basades enAjax.SQLAlchemy es pot utilitzar com amapejador de dades a unabase de dades relacional.Twisted és unentorn de treball per programar comunicacions entre ordinadors i que és utilitzat (per exemple) perDropbox.

Biblioteques comNumPy,SciPy iMatplotlib permeten l'ús eficaç de Python encomputació científica,[110][111] amb biblioteques especialitzades comBiopython iAstropy proporcionant funcionalitat específica del domini.SageMath és unprogramari matemàtic amb una interfície de quaderns programable a Python: la seva biblioteca cobreix molts aspectes de lesmatemàtiques, incloentàlgebra,combinatòria,anàlisi numèrica,teoria de nombres icàlcul.

Python s'ha incrustat amb èxit en molts productes de programari com a llenguatge script, inclòs en programari d'anàlisi d'elements finits comAbaqus, modelador de CAD 3D comFreeCAD, paquets d'animació 3D com3ds Max,Blender,Cinema 4D,Lightwave,Houdini,Maya,Modo,MotionBuilder,Softimage, el compositor d'efectes visualsNuke, programes d'imatge en 2D comGIMP,[112]Inkscape,Scribus iPaint Shop Pro,[113] i programes denotació musical com aeditors de partitures icapella.GNU Debugger utilitza Python per mostrar estructures complexes com ara contenidors C ++.Esri promou Python com la millor opció per escriure guions aArcGIS.[114] També s'ha utilitzat en diversos videojocs,[115][116] i s'ha adoptat com a primer dels tresllenguatges de programació disponibles aGoogle App Engine, els altres dos sónJava iGo.[117]

Python s'utilitza habitualment en projectes d'intel·ligència artificial amb l'ajut de biblioteques comTensorFlow,Keras,Pytorch iScikit-learn.[118][119][120][121] Com allenguatge script ambprogramació modular, sintaxi senzilla i eines de processament de text enriquit, Python s'utilitza sovint per alprocessament de llenguatge natural.[122]

Molts sistemes operatius inclouen Python com a component estàndard. S'ofereix amb la majoria dedistribucions Linux,[123]AmigaOS 4,FreeBSD (com a paquet),NetBSD,OpenBSD (com a paquet) imacOS i es pot utilitzar des de la línia d'ordres (terminal). Moltes distribucions de Linux utilitzen instal·ladors escrits a Python:Ubuntu utilitza l'instal·ladorUbiquity, mentre queRed Hat Linux iFedora utilitzen el programariAnaconda.Gentoo Linux utilitza Python en el seusistema de gestió de paquets,Portage.

Python s'utilitza àmpliament en la indústria de la seguretat de la informació, inclòs en el desenvolupament d'exploits.[124][125]

La major part del programariSugar per aUn portàtil per nen/a XO (OLPC), actualment desenvolupat aSugar Labs, està escrit a Python.[126] El projecteSBCRaspberry Pi ha adoptat Python com a principal llenguatge de programació d'usuaris.

A causa del llenguatge i de les convencions fàcils d'entendre de Python, s'utilitza habitualment com a llenguatge d'introducció en ciències de la computació amb els estudiants. Això permet als estudiants aprendre fàcilment teories i conceptes informàtics i després aplicar-los a altres llenguatges de programació.

LibreOffice inclou Python i té la intenció de substituir Java per Python. El seu proveïdor de scripts de Python és una característica bàsica[127] des de la versió 4.0 des del 7 de febrer de 2013.

Referències

[modifica]
  1. TIOBE Software Index. «TIOBE Programming Community Index Python», 2012. [Consulta: 14 juliol 2011].
  2. «Programming Language Trends - O'Reilly Radar». Radar.oreilly.com, 02-08-2006. [Consulta: 14 juliol 2011].
  3. «The RedMonk Programming Language Rankings: January 2013 – tecosystems». Redmonk.com, 28-02-2013. [Consulta: 17 juliol 2013].
  4. Summerfield, Mark.Rapid GUI Programming with Python and Qt. «Python is a very expressive language, which means that we can usually write far fewer lines of Python code than would be required for an equivalent application written in, say, C++ or Java» 
  5. Code Complete, p. 100. 
  6. Kuhlman, Dave. «A Python Book: Beginning Python, Advanced Python, and Python Exercises». Arxivat de l'original el 2012-06-23. [Consulta: 11 juliol 2014].
  7. «About Python». Python Software Foundation. [Consulta: 24 abril 2012]. «Fans of Python use the phrase "batteries included" to describe the standard library, which covers everything from asynchronous processing to zip files.»
  8. «PyInstaller Home Page». Arxivat de l'original el 2014-07-08. [Consulta: 27 gener 2014].
  9. Python Software Foundation Launched
  10. Mission Statement of the Python Programari Foundation
  11. 11,011,111,2«The Making of Python». [Consulta: 1r abril 2020].
  12. van Rossum, Guido. «SETL (was: Lukewarm about range literals)». Llista de correu Python-Dev, 29-08-2000. [Consulta: 13 març 2011].
  13. 13,013,1«General Python FAQ — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  14. Rossum, Guido Van. «The History of Python: A Brief Timeline of Python», 20-01-2009. [Consulta: 1r abril 2020].
  15. «Interview with Guido van Rossum (July 1998)», 23-08-2007. Arxivat de l'original el 2007-08-23. [Consulta: 1r abril 2020].
  16. 16,016,1«itertools — Functions creating iterators for efficient looping — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  17. 17,017,1«What's New in Python 2.0», 29-03-2007. Arxivat de l'original el 2007-03-29. [Consulta: 1r abril 2020].
  18. 18,018,1«History and License — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  19. «PEP 227 -- Statically Nested Scopes» (en anglès). [Consulta: 1r abril 2020].
  20. 20,020,1«What’s New in Python 2.2 — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  21. «PEP 282 -- A Logging System» (en anglès). [Consulta: 1r abril 2020].
  22. «threading — Thread-based parallelism — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  23. «Computer Programming for Everybody», 12-03-2007. Arxivat de l'original el 2007-03-12. [Consulta: 1r abril 2020].
  24. Fairchild, Carlie. «Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life |». Linux Journal, 12-07-2018. [Consulta: 1r abril 2020].
  25. 25,025,125,2Smith, Nathaniel J. «January 2019 steering council election» (en anglès). Python Enhancement Proposals - PEP 8100, 03-01-2019. [Consulta: 1r abril 2020].
  26. «Mission» (en anglès). [Consulta: 1r abril 2020].
  27. Guido van Rossum. «Foreword for "Programming Python" (1st ed.)», 1996. [Consulta: 10 juliol 2014].
  28. «What’s New in Python 2.0 — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  29. «Python 3.0 Release» (en anglès). [Consulta: 1r abril 2020].
  30. «PEP 3000 -- Python 3000» (en anglès). [Consulta: 1r abril 2020].
  31. «2to3 - Automated Python 2 to 3 code translation — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  32. «What's New in Python 3.6 ? | New Features in Python 3.6» (en anglès), 17-03-2018. [Consulta: 1r abril 2020].
  33. «What’s New In Python 3.6 — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  34. «What’s New In Python 3.7 — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  35. «What’s New In Python 3.8 — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  36. 36,036,1«What’s New In Python 3.9 — Python 3.9.0a5 documentation». [Consulta: 1r abril 2020].
  37. SHavtikova, L.M. «Using Python to schedule graphics». SCIENTIFIC DEVELOPMENT TRENDS AND EDUCATION, 2019.DOI:10.18411/lj-12-2019-30.
  38. «Wayback Machine», 30-05-2009. Arxivat de l'original el 2009-05-30. [Consulta: 1r abril 2020].
  39. «Data model — Python v3.0.1 documentation». [Consulta: 1r abril 2020].
  40. «Contracts for Python». [Consulta: 1r abril 2020].
  41. «Contracts for Python». [Consulta: 1r abril 2020].
  42. «pyDatalog». [Consulta: 1r abril 2020].[Enllaç no actiu]
  43. Ascher, Alex Martelli, Anna Ravenscroft, David.Python Cookbook (en anglès).ISBN 978-0-596-00797-3. 
  44. «ebeab.com». [Consulta: 1r abril 2020].
  45. «General Python FAQ — Python 2.7.17 documentation». [Consulta: 1r abril 2020].
  46. «15 aspectes en què Python és una força important a la Web». Arxivat de l'original el 2019-05-11. [Consulta: 1r abril 2020].
  47. «8.18. pprint — Data pretty printer — Python 2.7.17 documentation». [Consulta: 1r abril 2020].
  48. «PEP 20 -- The Zen of Python» (en anglès). [Consulta: 1r abril 2020].
  49. «Programa com un Pythonista: Python idiomàtic». Arxivat de l'original el 2014-05-27. [Consulta: 1r abril 2020].
  50. «Com pensar com un Pythonista». Arxivat de l'original el 2018-03-23. [Consulta: 1r abril 2020].
  51. «Is Python a good language for beginning programmers?». General Python FAQ. Python Foundation, 07-03-2005. [Consulta: 21 març 2007].
  52. «3.8.2 Documentation». [Consulta: 1r abril 2020].
  53. «PEP 465 -- A dedicated infix operator for matrix multiplication» (en anglès). [Consulta: 1r abril 2020].
  54. «Python Release Python 3.5.1» (en anglès). [Consulta: 1r abril 2020].
  55. «Chapter 15. Expressions». [Consulta: 1r abril 2020].
  56. «Chapter 15. Expressions». [Consulta: 1r abril 2020].
  57. «PEP 289 -- Generator Expressions» (en anglès). [Consulta: 1r abril 2020].
  58. «PEP 308 -- Conditional Expressions» (en anglès). [Consulta: 1r abril 2020].
  59. «Built-in Types — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  60. «PEP 498 -- Literal String Interpolation» (en anglès). [Consulta: 1r abril 2020].
  61. «15 Extended Slices». [Consulta: 1r abril 2020].
  62. «7.5 Function definitions». [Consulta: 1r abril 2020].
  63. «2.3 Built-in Functions». [Consulta: 1r abril 2020].
  64. «9. Classes — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  65. «9. Classes — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  66. «Duck Typing». [Consulta: 2 abril 2020].
  67. «3. Data model — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  68. «Built-in Types — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  69. Przemyslaw Piotrowski,Build a Rapid Web Development Environment for Python Server Pages and Oracle, Oracle Technology Network, juliol de 2006. Accedit el 21 d'octubre de 2008.
  70. «About Python». python.org. Python Software Foundation. [Consulta: 27 juny 2009].
  71. «PEP 327 - Decimal Data Type». Python.org. [Consulta: 24 novembre 2008].
  72. «PyPI · The Python Package Index» (en anglès). [Consulta: 31 març 2020].
  73. «PEP 427 -- The Wheel Binary Package Format 1.0» (en anglès). [Consulta: 31 març 2020].
  74. «Conda — Conda documentation». [Consulta: 31 març 2020].
  75. «Understanding Conda and Pip» (en anglès), 28-11-2018. [Consulta: 31 març 2020].
  76. «Canopy IDE». Arxivat de l'original el 2017-07-15. [Consulta: 1r abril 2020].
  77. «PEP 7 - Style Guide for C Code». Python.org. [Consulta: 24 novembre 2008].
  78. «CPython byte code». Arxivat de l'original el 2008-09-15. [Consulta: 30 octubre 2010].
  79. «Python 2.5 internals». Arxivat de l'original el 2012-08-06. [Consulta: 30 octubre 2010].
  80. «O'Reilly - An Interview with Guido van Rossum». Oreilly.com. [Consulta: 24 novembre 2008].
  81. ProjectPlan[Enllaç no actiu], Plans for optimizing Python - unladen-swallow
  82. 82,082,1«PEP 1 -- PEP Purpose and Guidelines» (en anglès). [Consulta: 1r abril 2020].
  83. «PEP 8 -- Style Guide for Python Code» (en anglès). [Consulta: 1r abril 2020].
  84. «Guido, Some Guys, and a Mailing List: How Python is Developed», 01-06-2009. Arxivat de l'original el 2009-06-01. [Consulta: 1r abril 2020].
  85. «Python Developer’s Guide — Python Developer's Guide». [Consulta: 1r abril 2020].
  86. Norwitz, Neal. «[Python-Dev Release Schedules (was Stability & change)]», 08-04-2002. [Consulta: 1r abril 2020].
  87. «PEP 6 -- Bug Fix Releases» (en anglès). [Consulta: 1r abril 2020].
  88. «PEP 602 -- Annual Release Cycle for Python» (en anglès). [Consulta: 1r abril 2020].
  89. «Changing the Python release cadence [LWN.net]». [Consulta: 1r abril 2020].
  90. «PEP 596 -- Python 3.9 Release Schedule» (en anglès). [Consulta: 1r abril 2020].
  91. «Python Buildbot» (en anglès). [Consulta: 1r abril 2020].
  92. «Modulecounts». Arxivat de l'original el 2017-09-09. [Consulta: 1r abril 2020].
  93. 93,093,1«1. Whetting Your Appetite — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  94. «coding style - In Python, should I use else after a return in an if block?». [Consulta: 1r abril 2020].
  95. «Learning python: powerful object-oriented programming (en anglès)». [Consulta: 1r abril 2020].
  96. Fehily, Chris.Python (en anglès). Peachpit Press, 2002.ISBN 978-0-201-74884-0. 
  97. «index | TIOBE - The Software Quality Company». [Consulta: 1r abril 2020].
  98. «TIOBE Programming Community Index Python». Arxivat de l'original el 2015-09-07. [Consulta: 1r abril 2020].
  99. «"An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl"» (en anglès). Prechelt, Lutz, 14-03-2000. [Consulta: 1r abril 2020].
  100. «Quotes about Python» (en anglès). [Consulta: 1r abril 2020].
  101. «OrganizationsUsingPython - Python Wiki». [Consulta: 1r abril 2020].
  102. «Python : the holy grail of programming». [Consulta: 1r abril 2020].
  103. «Python Success Stories» (en anglès). [Consulta: 1r abril 2020].
  104. «Tornado: Facebook's Real-Time Web Framework for Python» (en anglès). [Consulta: 1r abril 2020].
  105. «What Powers Instagram: Hundreds of Instances, Dozens of Technologies» (en anglès). [Consulta: 1r abril 2020].
  106. Meer, Geoff van der. «How we use Python at Spotify» (en anglès), 20-03-2013. [Consulta: 1r abril 2020].
  107. «Python Success Stories» (en anglès). [Consulta: 1r abril 2020].
  108. «reddit-archive/reddit», 01-04-2020. [Consulta: 1r abril 2020].
  109. «Usage Statistics and Market Share of Python for Websites, April 2020». [Consulta: 1r abril 2020].
  110. «Python for Scientific Computing» (en anglès), 01-12-2011. Arxivat de l'original el 2020-06-15. [Consulta: 1r abril 2020].
  111. «CSDL | IEEE Computer Society». [Consulta: 1r abril 2020].
  112. «GIMP - Windows installers», 17-07-2013. Arxivat de l'original el 2013-07-17. [Consulta: 1r abril 2020].
  113. «jasc psp9components» (en anglès). Arxivat de l'original el 2008-03-19. [Consulta: 1r abril 2020].
  114. «ArcGIS Desktop Help 9.2 - About getting started with writing geoprocessing scripts». [Consulta: 1r abril 2020].
  115. «Stackless Python 2.7» (en anglès), 24-08-2010. [Consulta: 1r abril 2020].
  116. «Civilization IV», 02-12-2010. Arxivat de l'original el 2010-12-02. [Consulta: 1r abril 2020].
  117. «Python Language Guide (v1.0)» (en anglès). Arxivat de l'original el 2010-07-15. [Consulta: 1r abril 2020].
  118. «TensorFlow: Large-scale machine learning on heterogeneous systems (PDF)» (en anglès). [Consulta: 1r Abril 2020].
  119. «Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis» (en anglès). [Consulta: 1r abril 2020].
  120. «Who is using scikit-learn? — scikit-learn 0.22.2 documentation». [Consulta: 1r abril 2020].
  121. «Google supercharges machine learning tasks with TPU custom chip» (en anglès). [Consulta: 1r abril 2020].[Enllaç no actiu]
  122. «Natural Language Toolkit — NLTK 3.5b1 documentation». [Consulta: 1r abril 2020].
  123. «2. Using Python on Unix platforms — Python 3.8.2 documentation». [Consulta: 1r abril 2020].
  124. «IMMUNITY : Knowing You're Secure», 16-02-2009. Arxivat de l'original el 2009-02-16. [Consulta: 1r abril 2020].
  125. «Core Security». [Consulta: 1r abril 2020].
  126. «What is Sugar? - Sugar Labs». [Consulta: 1r abril 2020].
  127. «Download LibreOffice | LibreOffice - Free Office Suite - Fun Project - Fantastic People». [Consulta: 1r abril 2020].

Vegeu també

[modifica]

Bibliografia

[modifica]

Enllaços externs

[modifica]
En altres projectes deWikimedia:
Commons
Commons
Commons (Galeria)Modifica el valor a Wikidata
Commons
Commons
Commons (Categoria)Modifica el valor a Wikidata
Viquillibres
Viquillibres
Viquillibres
  • Vegeu aquesta plantilla
Assembly · Bash · BASIC · C · C++ · C# · COBOL · Haskell · Idris · Fortran · Java · JavaScript (JS) · Lisp · Pascal · Perl · PHP · Prolog · Python · PureScript · Ruby · Scheme · Smalltalk · Visual Basic
Registres d'autoritat
Bases d'informació
Obtingut de «https://ca.wikipedia.org/w/index.php?title=Python&oldid=36844532»
Categories:
Categories ocultes:

[8]ページ先頭

©2009-2026 Movatter.jp