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
Paradigma
Multiparadigma: orientado a
objetos, imperativo, funcional,
reflexivo
Apareci en
1991
Diseado por
ltima versin
estable
Tipo de dato
Implementaciones
Influido por
Ha influido a
Sistema operativo
Multiplataforma
Licencia
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
6 Sistema de objetos
7 Biblioteca estndar
8 Implementaciones
10 Vase tambin
11 Referencias
12 Bibliografa
13 Enlaces externos
Historia
Artculo principal: Historia de Python
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
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
La legibilidad cuenta.
Los casos especiales no son tan especiales como para quebrantar las reglas.
Aunque esa manera puede no ser obvia al principio a menos que usted sea
holands.15
Los espacios de nombres (namespaces) son una gran idea Hagamos ms de esas
cosas!
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]
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);
}
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'