Python

De Viquipèdia
Dreceres ràpides: navegació, cerca
Python
Paradigma de programació: Multiparadigma, orientat a objectes, imperatiu, procedimental, reflectiu
Aparegut l'any: 1991
Dissenyat per: Guido van Rossum
Desenvolupador: Python Software Foundation
Darrera versió estable: 3.4.1/
Març 17, 2014; fa 5 mesos (2014-03-17)[1]
2.7.8/
Novembre 10, 2013; fa 9 mesos (2013-11-10)[2]
Tipus de dades: Forta, dinàmica
Majors implementacions CPython, Jython, IronPython, Pypy
Dialectes: Stackless Python, RPython, Cython
Influenciat per: ABC,[3] ALGOL 68,[4] C,[5] C++,[6] Dylan,[7] Haskell,[8] Icon,[9] Java,[10] Lisp,[11] Modula-3,[6] Perl
Ha influenciat: Ruby, Boo, Groovy
Sistema operatiu: Multiplataforma
Llicència: Python Software Foundation License
Pàgina web: http://www.python.org

Python és un llenguatge de programació d'alt nivell àmpliament usat per propòsits generals [12][13][14] creat per Guido van Rossum l'any 1991. La seva filosofia de disseny busca llegibilitat en el codi i la seva sintaxi permet als programadors expressar conceptes en menys línies de codi del que seria possible en llenguatges com C.[15][16] També proveeix estructures per permetre programes més entenedors tan en petita com a gran escala.[17]

Python suporta diversos paradigmes de programació, incloent-hi programació orientada a objectes, imperativa i també funcional o procedimental. Presenta un sistema dinàmic i una gestió de la memòria automàtica i té una gran i exhaustiva biblioteca estàndard.[18]

Com altres llenguatges de programació dinàmics, Python és usat sovint com a un llenguatge script, però també es fa servir en una àmplia gamma de contextos no-script. Utilitzant eines desenvolupades per tercers com Py2exe o Pyinstaller,[19] el codi Python pot ser reduït a programes executables independents. Existeixen intèrprets de Python per molts sistemes operatius diferents.

CPython, la implementació de referència de Python, és programari lliure i de codi obert té un model de desenvolupament basat en la comunitat, de la mateixa manera que la major part de les altres implementacions. És controlat per l'organització sense ànim de lucre Python Software Foundation.

Història[modifica | modifica el codi]

Guido van Rossum, el creador de Python

Python va ser concebut a finals de la dècada del 1980 [20] i la seva implementació va començar el desembre de 1989 [21] per Guido van Rossum dins el CWI als Països Baixos com a successor del llenguatge de programació ABC (el qual havia estat inspirat per SETL) [22] capaç de gestionar excepcions i d'interconnexió amb el sistema operatiu Amoeba.[3] Van Rossum és el principal autor de Python, i el seu permanent rol central en les decisions és reflectit en el sobrenom que li ha posat la comunitat Python: benevolent dictador for life (BDFL)

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

« Fa uns sis anys, pels volts del desembre de 1989, estava buscant 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 per el nou llenguatge script que havia estat pensant darrerament: un descendent d'ABC que apel·laria a Unix/C hackers. Vaig triar Python com a nom del projecte, estant en un estat d'ànim lleugerament irreverent (i un gran fan de Monty Python's Flying Circus) »
Guido van Rossum. «Foreword for "Programming Python" (1st ed.)», 1996.

Sintaxi i semàntica[modifica | modifica el codi]

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

Sagnat[modifica | modifica el codi]

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.[24] S'inclou una comparació amb el Java per exemplificar-ho.

Hola món en Python Hola món en Java
def main():
    print u"Hola, món!"
public class HolaMon {
      public static void main(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).

public class HolaMon { public static void main(String[] args) { System.out.println("Hola, món!"); } }

Sentències[modifica | modifica el codi]

Algunes de les sentències del Python són:

  • La sentència 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 en anglè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 = 3
if x == 0: # Si x és 0
   print u'x és 0'
elif x == 2: # Si x és 2
   print u'x és 2'
else: # Si x no és 0 ni 2
   print u'x és un altre número'
  • La sentència for, que itera sobre un objecte iterable, com per exemple una llista. Per cada iteració, executa un bloc de codi.
  • La sentència while, que executa un bloc de codi sempre que es compleixi una condició.
  • La sentència try, que permet el maneig d'excepcions ocorregudes dins d'un bloc de codi. Requereix la sentència except, que especifica quines excepcions s'han de tractar. També existeix la sentència finally, que s'executa sempre acabi al final.
  • La sentència class, que crea una classe. S'utilitza en programació orientada a objectes.
  • La sentència def, que defineix una subrutina o un mètode.
  • La sentència with (a partir del Python 2.6).
  • La sentència pass, que no efectua cap operació i es pot utilitzar en lloc d'un bloc de codi.
  • La sentència assert, que s'utilitza en depuració per comprovar que es compleixin certes condicions.
  • La sentència yield, que retorna un valor per ser utilitzat en un generador.

Llibreria estàndard[modifica | modifica el codi]

El Python té una llibreria estàndard gran, que tot sovint se cita com una de les principals fortaleses del Python.[25] Aporta eines ja programades que poden fer una gran varietat de funcions. S'ha dit que el Python té "piles incloses".[26] Els mòduls de la llibreria 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 un "llenguatge de cola" molt potent entre eines i llenguatges.

La llibreria estàndard està particularment ben encarada per escriure aplicacions dirigides a Internet, amb una gran quantitat de formats estàndards i protocols (com per exemple MIME i HTTP). També inclou mòduls per crear interfícies gràfiques d'usuari, connectar a bases de dades relacionals o manipular expressions regulars.[27] La llibreria estàndard, però, no és essencial per utilitzar el Python o incrustar-lo en altres aplicacions. El Blender 2.49, per exemple, n'omet la major part.

Implementacions[modifica | modifica el codi]

CPython[modifica | modifica el codi]

Article principal: CPython

La implementació principal del Python, coneguda com a CPython, està escrita en C, satisfent l'estàndard C89.[28] El CPython compila els programes Python en un bytecode intermedi,[29] que posteriorment s'executa per la màquina virtual.[30] Es distribueix amb una llibreria estàndard força gran escrita en una barreja de C i Python. Té versions per moltes plataformes, incloent Microsoft Windows i la major part dels sistemes Unix-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 com Unix i Mac OS, ha ajudat en aquest aspecte.[31] El 2009 Google va començar un projecte anomenat Unladen Swallow amb l'objectiu d'incrementar la velocitat de l'interpretador Python unes cinc vegades.[32]

Programa d'exemple[modifica | modifica el codi]

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

 print "Hola món"

Articles relacionats[modifica | modifica el codi]

Referències[modifica | modifica el codi]

  1. «Python 3.4.1». Python Software Foundation. [Consulta: 21-5-2014].
  2. «Python 2.7.8 Release». Python Software Foundation. [Consulta: 1-6-2014].
  3. 3,0 3,1 «Why was Python created in the first place?». General Python FAQ. Python Software Foundation. [Consulta: 10-6-2014].
  4. Kuchling, Andrew M. «Interview with Guido van Rossum (July 1998)». amk.ca, 22 desembre 2006. [Consulta: 12-3-2012].
  5. van Rossum, Guido. «An Introduction to Python for UNIX/C Programmers». Proceedings of the NLUUG najaarsconferentie (Dutch UNIX users group), 1993. «even though the design of C is far from ideal, its influence on Python is considerable.»
  6. 6,0 6,1 «Classes». The Python Tutorial. Python Software Foundation. [Consulta: 10-6-2014]. «It is a mixture of the class mechanisms found in C++ and Modula-3»
  7. Simionato, Michele. «The Python 2.3 Method Resolution Order». Python Software Foundation. «The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers»
  8. Kuchling, A. M. «Functional Programming HOWTO». Python v2.7.2 documentation. Python Software Foundation. [Consulta: 10-6-2014].
  9. ; Peters, Tim; Hetland, Magnus Lie«PEP 255 – Simple Generators». Python Enhancement Proposals. Python Software Foundation, 18 maig 2001. [Consulta: 10-6-2014].
  10. ; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony«PEP 318 – Decorators for Functions and Methods». Python Enhancement Proposals. Python Software Foundation, 2 setembre 2004. [Consulta: 10-6-2014].
  11. «More Control Flow Tools». Python 3 documentation. Python Software Foundation. [Consulta: 10-6-2014].
  12. TIOBE Software Index. «TIOBE Programming Community Index Python», 2012. [Consulta: 11-7-14].
  13. «Programming Language Trends - O'Reilly Radar». Radar.oreilly.com, 2 agost 2006. [Consulta: 11-7-14].
  14. «The RedMonk Programming Language Rankings: January 2013 – tecosystems». Redmonk.com, 28 febrer 2013. [Consulta: 17 juliol 2013].
  15. 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» 
  16. Code Complete, p. 100. 
  17. Kuhlman, Dave. «A Python Book: Beginning Python, Advanced Python, and Python Exercises».
  18. «About Python». Python Software Foundation. [Consulta: 24-4-2012]. «Fans of Python use the phrase "batteries included" to describe the standard library, which covers everything from asynchronous processing to zip files.»
  19. «PyInstaller Home Page». [Consulta: 27-1-2014].
  20. Venners, Bill. «The Making of Python». Artima Developer. Artima, 13 gener 2003. [Consulta: 22 març 2007].
  21. van Rossum, Guido. «A Brief Timeline of Python». The History of Python. Google, 20 gener 2009. [Consulta: 20 gener 2009].
  22. Plantilla:Cite mailing list
  23. Guido van Rossum. «Foreword for "Programming Python" (1st ed.)», 1996. [Consulta: 10 juliol 2014].
  24. «Is Python a good language for beginning programmers?». General Python FAQ. Python Foundation, 7 de març de 2005. [Consulta: 21-03-2007].
  25. 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.
  26. «About Python». python.org. Python Software Foundation. [Consulta: 2009-06-27].
  27. «PEP 327 - Decimal Data Type». Python.org. [Consulta: 24-11-2008].
  28. «PEP 7 - Style Guide for C Code». Python.org. [Consulta: 24-11-2008].
  29. CPython byte code
  30. Python 2.5 internals
  31. «O'Reilly - An Interview with Guido van Rossum». Oreilly.com. [Consulta: 2008-11-24].
  32. ProjectPlan, Plans for optimizing Python - unladen-swallow

Lectura addicional[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]