Anda di halaman 1dari 9

Python

Este artculo trata sobre el lenguaje de programacin. Para el grupo de humoristas, vase Monty
Python.
Para el revlver, vase Colt Python.
Para otros usos de este trmino, vase Pitn.
Python

Desarrollador(es)
Python Software Foundation
http://www.python.org/
Informacin general
Extensiones
comunes

.py, .pyc, .pyd, .pyo, .pyw

Paradigma

Multiparadigma: orientado a
objetos, imperativo, funcional,
reflexivo

Apareci en

1991

Diseado por

Guido van Rossum


3.5.1 / 2.7.11 (6 de diciembre de

ltima versin
estable

2015 (11 meses y 4 das) /


5 de diciembre de 2015 (11 meses y 5
das))

Tipo de dato

Fuertemente tipado, dinmico

Implementaciones

CPython, IronPython, Jython,


Python for S60, PyPy, Pygame,

ActivePython, Unladen Swallow


Dialectos

Stackless Python, RPython

Influido por

ABC, ALGOL 68, C, Haskell,


Icon, Lisp, Modula-3, Perl,
Smalltalk, Java

Ha influido a

Boo, Cobra, D, Falcon, Genie,


Groovy, Ruby, JavaScript,
Cython, Go

Sistema operativo

Multiplataforma

Licencia

Python Software Foundation


License

[editar datos en Wikidata]

Python es un lenguaje de programacin interpretado cuya filosofa hace hincapi en una sintaxis
que favorezca un cdigo legible.
Se trata de un lenguaje de programacin multiparadigma, ya que soporta orientacin a objetos,
programacin imperativa y, en menor medida, programacin funcional. Es un lenguaje
interpretado, usa tipado dinmico y es multiplataforma.
Es administrado por la Python Software Foundation. Posee una licencia de cdigo abierto,
denominada Python Software Foundation License,1 que es compatible con la Licencia pblica
general de GNU a partir de la versin 2.1.1, e incompatible en ciertas versiones anteriores.

ndice

1 Historia

2 Caractersticas y paradigmas

3 Filosofa

4 Modo interactivo

5 Elementos del lenguaje


o 5.1 Comentarios
o 5.2 Variables

o 5.3 Tipos de datos


o 5.4 Listas y Tuplas
o 5.5 Diccionarios
o 5.6 Conjuntos
o 5.7 Listas por comprensin
o 5.8 Funciones
o 5.9 Clases
o 5.10 Condicionales
o 5.11 Bucle for
o 5.12 Bucle while
o 5.13 Mdulos

6 Sistema de objetos

7 Biblioteca estndar

8 Implementaciones

9 Diferencias entre Python 2.x y Python 3.x

10 Vase tambin

11 Referencias

12 Bibliografa

13 Enlaces externos

Historia
Artculo principal: Historia de Python

Guido van Rossum, creador de Python, en la convencin OSCON 2006


Python fue creado a finales de los ochenta2 por Guido van Rossum en el Centro para las
Matemticas y la Informtica (CWI, Centrum Wiskunde & Informatica), en los Pases Bajos,
como un sucesor del lenguaje de programacin ABC, capaz de manejar excepciones e interactuar
con el sistema operativo Amoeba.3
El nombre del lenguaje proviene de la aficin de su creador por los humoristas britnicos Monty
Python.4
Van Rossum es el principal autor de Python, y su continuo rol central en decidir la direccin de
Python es reconocido, refirindose a l como Benevolente Dictador Vitalicio (en ingls:
Benevolent Dictator for Life, BDFL).
En 1991, van Rossum public el cdigo de la versin 0.9.0 en alt.sources.5 En esta etapa del
desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones y los tipos
modulares, como: str, list, dict, entre otros. Adems en este lanzamiento inicial apareca un
sistema de mdulos adoptado de Modula-3; van Rossum describe el mdulo como una de las
mayores unidades de programacin de Python.2 El modelo de excepciones en Python es
parecido al de Modula-3, con la adicin de una clusula else.3 En el ao 1994 se form
comp.lang.python, el foro de discusin principal de Python, marcando un hito en el crecimiento
del grupo de usuarios de este lenguaje.
Python alcanz la versin 1.0 en enero de 1994. Una caracterstica de este lanzamiento fueron las
herramientas de la programacin funcional: lambda, reduce, filter y map. Van Rossum explic
que hace 12 aos, Python adquiri lambda, reduce(), filter() y map(), cortesa de un hacker
informtico de Lisp que las extraaba y que envi parches.6 El donante fue Amrit Prem; no se
hace ninguna mencin especfica de cualquier herencia de Lisp en las notas de lanzamiento.
La ltima versin liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continu
su trabajo en Python en la Corporation for National Research Initiatives (CNRI) en Reston,
Virginia, donde lanz varias versiones del software.
Durante su estancia en CNRI, van Rossum lanz la iniciativa Computer Programming for
Everybody (CP4E), con el fin de hacer la programacin ms accesible a ms gente, con un nivel
de 'alfabetizacin' bsico en lenguajes de programacin, similar a la alfabetizacin bsica en

ingls y habilidades matemticas necesarias por muchos trabajadores. Python tuvo un papel
crucial en este proceso: debido a su orientacin hacia una sintaxis limpia, ya era idneo, y las
metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por
DARPA.7 En el ao 2007, el proyecto CP4E est inactivo, y mientras Python intenta ser fcil de
aprender y no muy arcano en su sintaxis y semntica, alcanzando a los no-programadores, no es
una preocupacin activa.8
En el ao 2000, el equipo principal de desarrolladores de Python se cambi a BeOpen.com para
formar el equipo BeOpen PythonLabs. CNRI pidi que la versin 1.6 fuera pblica, continuando
su desarrollo hasta que el equipo de desarrollo abandon CNRI; su programa de lanzamiento y el
de la versin 2.0 tenan una significativa cantidad de traslapo.9 Python 2.0 fue el primer y nico
lanzamiento de BeOpen.com. Despus que Python 2.0 fuera publicado por BeOpen.com, Guido
van Rossum y los otros desarrolladores de PythonLabs se unieron en Digital Creations.
Python 2.0 tom una caracterstica mayor del lenguaje de programacin funcional Haskell: listas
por comprensin. La sintaxis de Python para esta construccin es muy similar a la de Haskell,
salvo por la preferencia de los caracteres de puntuacin en Haskell, y la preferencia de Python
por palabras claves alfabticas. Python 2.0 introdujo adems un sistema de recoleccin de basura
capaz de recolectar referencias cclicas.9
Posterior a este doble lanzamiento, y despus que van Rossum dej CNRI para trabajar con
desarrolladores de software comercial, qued claro que la opcin de usar Python con software
disponible bajo GNU GPL era muy deseable. La licencia usada entonces, la Python License,
inclua una clusula estipulando que la licencia estaba gobernada por el estado de Virginia, por lo
que, bajo la ptica de los abogados de Free Software Foundation (FSF), se haca incompatible
con GPL. CNRI y FSF se relacionaron para cambiar la licencia de software libre de Python para
hacerla compatible con GPL. En el ao 2001, van Rossum fue premiado con FSF Award for the
Advancement of Free Software.
Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos pocos arreglos de bugs, y con
una nueva licencia compatible con GPL.1

Cdigo Python con coloreado de sintaxis.


Python 2.1 fue un trabajo derivado de Python 1.6.1, as como tambin de Python 2.0. Su licencia
fue renombrada a: Python Software Foundation License. Todo el cdigo, documentacin y
especificaciones aadidas, desde la fecha del lanzamiento de la versin alfa de Python 2.1, tiene
como dueo a Python Software Foundation (PSF), una organizacin sin nimo de lucro fundada
en el ao 2001, tomando como modelo la Apache Software Foundation.1 Incluido en este
lanzamiento fue una implementacin del scoping ms parecida a las reglas de static scoping (del
cual Scheme es el originador).10
Una innovacin mayor en Python 2.2 fue la unificacin de los tipos en Python (tipos escritos en
C), y clases (tipos escritos en Python) dentro de una jerarqua. Esa unificacin logr un modelo
de objetos de Python puro y consistente.11 Tambin fueron agregados los generadores que fueron
inspirados por el lenguaje Icon.12
Las adiciones a la biblioteca estndar de Python y las decisiones sintcticas fueron influenciadas
fuertemente por Java en algunos casos: el package logging,13 introducido en la versin 2.3, est
basado en log4j; el parser SAX, introducido en 2.0; el package threading,14 cuya clase Thread
expone un subconjunto de la interfaz de la clase homnima en Java.

Caractersticas y paradigmas
Python es un lenguaje de programacin multiparadigma. Esto significa que ms que forzar a los
programadores a adoptar un estilo particular de programacin, permite varios estilos:
programacin orientada a objetos, programacin imperativa y programacin funcional. Otros
paradigmas estn soportados mediante el uso de extensiones.
Python usa tipado dinmico y conteo de referencias para la administracin de memoria.
Una caracterstica importante de Python es la resolucin dinmica de nombres; es decir, lo que
enlaza un mtodo y un nombre de variable durante la ejecucin del programa (tambin llamado
enlace dinmico de mtodos).
Otro objetivo del diseo del lenguaje es la facilidad de extensin. Se pueden escribir nuevos
mdulos fcilmente en C o C++. Python puede incluirse en aplicaciones que necesitan una
interfaz programable.
Aunque la programacin en Python podra considerarse en algunas situaciones hostil a la
programacin funcional tradicional del Lisp, existen bastantes analogas entre Python y los
lenguajes minimalistas de la familia Lisp como puede ser Scheme.

Filosofa
Los usuarios de Python se refieren a menudo a la Filosofa Python que es bastante anloga a la
filosofa de Unix. El cdigo que sigue los principios de Python de legibilidad y transparencia se

dice que es "pythonico". Contrariamente, el cdigo opaco u ofuscado es bautizado como "no
pythonico" ("unpythonic" en ingls). Estos principios fueron famosamente descritos por el
desarrollador de Python Tim Peters en El Zen de Python

Bello es mejor que feo.

Explcito es mejor que implcito.

Simple es mejor que complejo.

Complejo es mejor que complicado.

Plano es mejor que anidado.

Disperso es mejor que denso.

La legibilidad cuenta.

Los casos especiales no son tan especiales como para quebrantar las reglas.

Lo prctico gana a lo puro.

Los errores nunca deberan dejarse pasar silenciosamente.

A menos que hayan sido silenciados explcitamente.

Frente a la ambigedad, rechaza la tentacin de adivinar.

Debera haber una -y preferiblemente slo una- manera obvia de hacerlo.

Aunque esa manera puede no ser obvia al principio a menos que usted sea
holands.15

Ahora es mejor que nunca.

Aunque nunca es a menudo mejor que ya mismo.

Si la implementacin es difcil de explicar, es una mala idea.

Si la implementacin es fcil de explicar, puede que sea una buena idea.

Los espacios de nombres (namespaces) son una gran idea Hagamos ms de esas
cosas!

Tim Peters, El Zen de Python


Desde la versin 2.1.2, Python incluye estos puntos (en su versin original en ingls) como un
huevo de pascua que se muestra al ejecutar import this.16

La LAMP comprende Python (aqu con Squid)

Modo interactivo
El intrprete de Python estndar incluye un modo interactivo en el cual se escriben las
instrucciones en una especie de intrprete de comandos: las expresiones pueden ser introducidas
una a una, pudiendo verse el resultado de su evaluacin inmediatamente, lo que da la posibilidad
de probar porciones de cdigo en el modo interactivo antes de integrarlo como parte de un
programa. Esto resulta til tanto para las personas que se estn familiarizando con el lenguaje
como para los programadores ms avanzados.
Existen otros programas, tales como IDLE, bpython o IPython,17 que aaden funcionalidades
extra al modo interactivo, como el autocompletado de cdigo y el coloreado de la sintaxis del
lenguaje.
Ejemplo del modo interactivo:
>>>
2
>>>
>>>
[0,

1 + 1
a = range(10)
print a
1, 2, 3, 4, 5, 6, 7, 8, 9]

Elementos del lenguaje


Python fue diseado para ser ledo con facilidad. Una de sus caractersticas es el uso de palabras
donde otros lenguajes utilizaran smbolos. Por ejemplo, los operadores lgicos !, || y && en
Python se escriben not, or y and, respectivamente. Curiosamente el lenguaje Pascal es junto con
COBOL uno de los lenguajes con muy clara sintaxis y ambos son de la dcada del 70. La idea
del cdigo claro y legible no es algo nuevo.

El contenido de los bloques de cdigo (bucles, funciones, clases, etc.) es delimitado mediante
espacios o tabuladores, conocidos como indentacin, antes de cada lnea de rdenes
pertenecientes al bloque.18 Python se diferencia as de otros lenguajes de programacin que
mantienen como costumbre declarar los bloques mediante un conjunto de caracteres,
normalmente entre llaves {}.19 20 Se pueden utilizar tanto espacios como tabuladores para
indentar el cdigo, pero se recomienda no mezclarlos.21
Funcin factorial en C (indentacin opcional)
int factorial(int x)
{
if (x == 0)
return 1;
else
return x * factorial(x - 1);
}

Funcin factorial en Python (indentacin


obligatoria)
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)

Debido al significado sintctico de la indentacin, cada instruccin debe estar contenida en una
sola lnea. No obstante, si por legibilidad se quiere dividir la instruccin en varias lneas,
aadiendo una barra invertida \ al final de una lnea, se indica que la instruccin contina en la
siguiente.
Estas instrucciones son equivalentes:
lista=['valor 1','valor 2','valor 3']
cadena='Esto es una cadena bastante larga'

Anda mungkin juga menyukai