Sunteți pe pagina 1din 11

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 pa
ra las Matemticas y la Informtica (CWI, Centrum Wiskunde & Informatica), en los Pas
es Bajos, como un sucesor del lenguaje de programacin ABC, capaz de manejar excep
ciones e interactuar con el sistema operativo Amoeba.3
El nombre del lenguaje proviene de la aficin de su creador por los humoristas bri
tnicos 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 Vit
alicio (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 eta
pa del desarrollo ya estaban presentes clases con herencia, manejo de excepcione
s, 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 Ro
ssum describe el mdulo como una de las mayores unidades de programacin de Python.2 E
l modelo de excepciones en Python es parecido al de Modula-3, con la adicin de un
a clusula else.3 En el ao 1994 se form comp.lang.python, el foro de discusin princip
al de Python, marcando un hito en el crecimiento del grupo de usuarios de este l
enguaje.
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 ma
p. Van Rossum explic que hace 12 aos, Python adquiri lambda, reduce(), filter() y ma
p(), 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 co
ntinu su trabajo en Python en la Corporation for National Research Initiatives (C
NRI) en Reston, Virginia, donde lanz varias versiones del software.
Durante su estancia en CNRI, van Rossum lanz la iniciativa Computer Programming f
or Everybody (CP4E), con el fin de hacer la programacin ms accesible a ms gente, co
n un nivel de 'alfabetizacin' bsico en lenguajes de programacin, similar a la alfab
etizacin bsica en ingls y habilidades matemticas necesarias por muchos trabajadores.
Python tuvo un papel crucial en este proceso: debido a su orientacin hacia una s
intaxis 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 proyec
to CP4E est inactivo, y mientras Python intenta ser fcil de aprender y no muy arca
no en su sintaxis y semntica, alcanzando a los no-programadores, no es una preocu
pacin 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 pbli
ca, 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 P
ython 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarroll
adores de PythonLabs se unieron en Digital Creations.
Python 2.0 tom una caracterstica mayor del lenguaje de programacin funcional Haskel
l: listas por comprensin. La sintaxis de Python para esta construccin es muy simil
ar a la de Haskell, salvo por la preferencia de los caracteres de puntuacin en Ha
skell, y la preferencia de Python por palabras claves alfabticas. Python 2.0 intr

odujo adems un sistema de recoleccin de basura capaz de recolectar referencias ccli


cas.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 entonc
es, la Python License, inclua una clusula estipulando que la licencia estaba gober
nada 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 relaciona
ron 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 Advancemen
t of Free Software.
Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos pocos arreglos d
e 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 vers
in alfa de Python 2.1, tiene como dueo a Python Software Foundation (PSF), una org
anizacin sin nimo de lucro fundada en el ao 2001, tomando como modelo la Apache Sof
tware 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 u
nificacin logr un modelo de objetos de Python puro y consistente.11 Tambin fueron a
gregados 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 intr
oducido 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 d
e la clase homnima en Java.
Caractersticas y paradigmas
Python es un lenguaje de programacin multiparadigma. Esto significa que ms que for
zar a los programadores a adoptar un estilo particular de programacin, permite va
rios 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 escrib
ir 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 P
ython 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 legibi

lidad y transparencia se dice que es "pythonico". Contrariamente, el cdigo opaco


u ofuscado es bautizado como "no pythonico" ("unpythonic" en ingls). Estos princi
pios fueron famosamente descritos por el desarrollador de Python Tim Peters en E
l 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 regl
as.
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 inmediat
amente, lo que da la posibilidad de probar porciones de cdigo en el modo interact
ivo antes de integrarlo como parte de un programa. Esto resulta til tanto para la
s 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 funciona
lidades 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.

El contenido de los bloques de cdigo (bucles, funciones, clases, etc.) es delimit


ado 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 conj
unto de caracteres, normalmente entre llaves {}.19 20 Se pueden utilizar tanto e
spacios como tabuladores para indentar el cdigo, pero se recomienda no mezclarlos
.21
Funcin factorial en C (indentacin opcional) Funcin factorial en Python (inden
tacin obligatoria)
int factorial(int x)
{
if (x == 0)
return 1;
else
return x * factorial(x - 1);
}

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 conten
ida en una sola lnea. No obstante, si por legibilidad se quiere dividir la instru
ccin 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'

lista=['valor 1','valor 2' \


,'valor 3']
cadena='Esto es una cadena ' \
'bastante larga'
Comentarios
Los comentarios se pueden poner de dos formas. La primera y ms apropiada para com
entarios largos es utilizando la notacin ''' comentario ''', tres apstrofos de ape
rtura y tres de cierre. La segunda notacin utiliza el smbolo #, y se extienden has
ta el final de la lnea.
El intrprete no tiene en cuenta los comentarios, lo cual es til si deseamos poner
informacin adicional en nuestro cdigo como, por ejemplo, una explicacin sobre el co
mportamiento de una seccin del programa.
'''
Comentario ms largo en una lnea en Python
'''
print "Hola mundo" # Tambin es posible aadir un comentario al final de una lnea de
cdigo

Variables
Las variables se definen de forma dinmica, lo que significa que no se tiene que e
specificar cul es su tipo de antemano y puede tomar distintos valores en otro mom
ento, incluso de un tipo diferente al que tena previamente. Se usa el smbolo = par
a asignar valores.
x = 1
x = "texto" # Esto es posible porque los tipos son asignados dinmicamente
Tipos de datos
Los tipos de datos se pueden resumir en esta tabla:
Tipo
Clase Notas Ejemplo
str
Cadena Inmutable
'Cadena'
unicode
Cadena Versin Unicode de str u'Cadena'
list
Secuencia
Mutable, puede contener objetos de diversos tipos
[4.0, 'Cadena', True]
tuple Secuencia
Inmutable, puede contener objetos de diversos tipos
(4.0, 'Cadena', True)
set
Conjunto
Mutable, sin orden, no contiene duplicados
set([4.0
, 'Cadena', True])
frozenset
Conjunto
Inmutable, sin orden, no contiene duplicados
frozenset([4.0, 'Cadena', True])
dict
Mapping
Grupo de pares clave:valor
{'key1': 1.0, 'key2': Fa
lse}
int
Nmero entero Precisin fija, convertido en long en caso de overflow.
42
long
Nmero entero Precisin arbitraria
42L 456966786151987643L
float Nmero decimal Coma flotante de doble precisin
3.1415927
complex
Nmero complejo
Parte real y parte imaginaria j.
(4.5 + 3
j)
bool
Booleano
Valor booleano verdadero o falso
True o False
Mutable: si su contenido (o dicho valor) puede cambiarse en tiempo de ejecuc
in.
Inmutable: si su contenido (o dicho valor) no puede cambiarse en tiempo de e
jecucin.
Listas y Tuplas
Para declarar una lista se usan los corchetes [], en cambio, para declarar u
na tupla se usan los parntesis (). En ambas los elementos se separan por comas, y
en el caso de las tuplas es necesario que tengan como mnimo una coma.
Tanto las listas como las tuplas pueden contener elementos de diferentes tip
os. No obstante las listas suelen usarse para elementos del mismo tipo en cantid
ad variable mientras que las tuplas se reservan para elementos distintos en cant
idad fija.
Para acceder a los elementos de una lista o tupla se utiliza un ndice entero
(empezando por "0", no por "1"). Se pueden utilizar ndices negativos para acceder
elementos a partir del final.
Las listas se caracterizan por ser mutables, es decir, se puede cambiar su c
ontenido en tiempo de ejecucin, mientras que las tuplas son inmutables ya que no
es posible modificar el contenido una vez creada.
Listas
>>> lista = ["abc", 42, 3.1415]
>>> lista[0] # Acceder a un elemento por su ndice

'abc'
>>> lista[-1] # Acceder a un elemento usando un ndice negativo
3.1415
>>> lista.append(True) # Aadir un elemento al final de la lista
>>> lista
['abc', 42, 3.1415, True]
>>> del lista[3] # Borra un elemento de la lista usando un ndice (en este caso: T
rue)
>>> lista[0] = "xyz" # Re-asignar el valor del primer elemento de la lista
>>> lista[0:2] # Mostrar los elementos de la lista del ndice "0" al "2" (sin incl
uir este ltimo)
['xyz', 42]
>>> lista_anidada = [lista, [True, 42L]] # Es posible anidar listas
>>> lista_anidada
[['xyz', 42, 3.1415], [True, 42L]]
>>> lista_anidada[1][0] # Acceder a un elemento de una lista dentro de otra list
a (del segundo elemento, mostrar el primer elemento)
True
Tuplas
>>> tupla = ("abc", 42, 3.1415)
>>> tupla[0] # Acceder a un elemento por su ndice
'abc'
>>> del tupla[0] # No es posible borrar (ni aadir) un elemento en una tupla, lo q
ue provocar una excepcin
( Excepcin )
>>> tupla[0] = "xyz" # Tampoco es posible re-asignar el valor de un elemento en
una tupla, lo que tambin provocar una excepcin
( Excepcin )
>>> tupla[0:2] # Mostrar los elementos de la tupla del ndice "0" al "2" (sin incl
uir este ltimo)
('abc', 42)
>>> tupla_anidada = (tupla, (True, 3.1415)) # Tambin es posible anidar tuplas
>>> 1, 2, 3, "abc" # Esto tambin es una tupla, aunque es recomendable ponerla ent
re parntesis (recuerda que requiere, al menos, una coma)
(1, 2, 3, 'abc')
>>> (1) # Aunque entre parntesis, esto no es una tupla, ya que no posee al menos
una coma, por lo que nicamente aparecer el valor
1
>>> (1,) # En cambio, en este otro caso, s es una tupla
(1,)
>>> (1, 2) # Con ms de un elemento no es necesaria la coma final
(1, 2)
>>> (1, 2,) # Aunque agregarla no modifica el resultado
(1, 2)
Diccionarios
Para declarar un diccionario se usan las llaves {}. Contienen elementos sepa
rados por comas, donde cada elemento est formado por un par clave:valor (el smbolo
: separa la clave de su valor correspondiente).
Los diccionarios son mutables, es decir, se puede cambiar el contenido de un
valor en tiempo de ejecucin.
En cambio, las claves de un diccionario deben ser inmutables. Esto quiere de
cir, por ejemplo, que no podremos usar ni listas ni diccionarios como claves.
El valor asociado a una clave puede ser de cualquier tipo de dato, incluso u
n diccionario.
>>> diccionario = {"cadena": "abc", "numero": 42, "lista": [True, 42L]} # Diccio

nario que tiene diferentes valores por cada clave, incluso una lista
>>> diccionario["cadena"] # Usando una clave, se accede a su valor
'abc'
>>> diccionario["lista"][0] # Acceder a un elemento de una lista dentro de un va
lor (del valor de la clave "lista", mostrar el primer elemento)
True
>>> diccionario["cadena"] = "xyz" # Re-asignar el valor de una clave
>>> diccionario["cadena"]
'xyz'
>>> diccionario["decimal"] = 3.1415927 # Insertar un nuevo elemento clave:valor
>>> diccionario["decimal"]
3.1415927
>>> diccionario_mixto = {"tupla": (True, 3.1415), "diccionario": diccionario} #
Tambin es posible que un valor sea un diccionario
>>> diccionario_mixto["diccionario"]["lista"][1] # Acceder a un elemento dentro
de una lista, que se encuentra dentro de un diccionario
42L
>>> diccionario = {("abc",): 42} # S es posible que una clave sea una tupla, pues
es inmutable
>>> diccionario = {["abc"]: 42} # No es posible que una clave sea una lista, pue
s es mutable, lo que provocar una excepcin
( Excepcin )
Conjuntos
Los conjuntos se construyen mediante set(items) donde items es cualquier obj
eto iterable, como listas o tuplas. Los conjuntos no mantienen el orden ni conti
enen elementos duplicados.
Se suelen utilizar para eliminar duplicados de una secuencia, o para operaci
ones matemticas como interseccin, unin, diferencia y diferencia simtrica.
>>> conjunto_inmutable = frozenset(["a", "b", "a"]) # Se utiliza una lista como
objeto iterable
>>> conjunto_inmutable
frozenset(['a', 'b'])
>>> conjunto1 = set(["a", "b", "a"]) # Primer conjunto mutable
>>> conjunto1
set(['a', 'b'])
>>> conjunto2 = set(["a", "b", "c", "d"]) # Segundo conjunto mutable
>>> conjunto2
set(['a', 'c', 'b', 'd']) # Recuerda, no mantienen el orden, como los diccionari
os
>>> conjunto1 & conjunto2 # Interseccin
set(['a', 'b'])
>>> conjunto1 | conjunto2 # Unin
set(['a', 'c', 'b', 'd'])
>>> conjunto1 - conjunto2 # Diferencia (1)
set([])
>>> conjunto2 - conjunto1 # Diferencia (2)
set(['c', 'd'])
>>> conjunto1 ^ conjunto2 # Diferencia simtrica
set(['c', 'd'])
Listas por comprensin
Una lista por comprensin (en ingls: list comprehension) es una expresin compacta pa
ra definir listas. Al igual que lambda, aparece en lenguajes funcionales. Ejempl
os:
>>> range(5) # La funcin "range" devuelve una lista, empezando en 0 y terminando

con el nmero indicado menos uno


[0, 1, 2, 3, 4]
>>> [i*i for i in range(5)] # Por cada elemento del rango, lo multiplica por s mi
smo y lo agrega al resultado
[0, 1, 4, 9, 16]
>>> lista = [(i, i + 2) for i in range(5)]
>>> lista
[(0, 2), (1, 3), (2, 4), (3, 5), (4, 6)]
Funciones
Las funciones se definen con la palabra clave def, seguida del nombre de la
funcin y sus parmetros. Otra forma de escribir funciones, aunque menos utilizada,
es con la palabra clave lambda (que aparece en lenguajes funcionales como Lisp).
El valor devuelto en las funciones con def ser el dado con la instruccin retur
n.
def:
>>> def suma(x, y = 2):
...
return x + y # Retornar la suma del valor de la variable "x" y el valor
de "y"
...
>>> suma(4) # La variable "y" no se modifica, siendo su valor: 2
6
>>> suma(4, 10) # La variable "y" s se modifica, siendo su nuevo valor: 10
14
lambda:
>>> suma = lambda x, y = 2: x + y
>>> suma(4) # La variable "y" no se modifica, siendo su valor: 2
6
>>> suma(4, 10) # La variable "y" s se modifica, siendo su nuevo valor: 10
14
Clases
Las clases se definen con la palabra clave class, seguida del nombre de la c
lase y, si hereda de otra clase, el nombre de esta.
En Python 2.x es recomendable que una clase herede de "object", en Python 3.
x esto ya no har falta.
En una clase un "mtodo" equivale a una "funcin", y un "atributo" equivale a un
a "variable".
"__init__" es un mtodo especial que se ejecuta al instanciar la clase, se usa
generalmente para inicializar atributos y ejecutar mtodos necesarios. Al igual q
ue todos los mtodos en Python, debe tener al menos un parmetro, generalmente se ut
iliza self. El resto de parmetros sern los que se indiquen al instanciar la clase.
Los atributos que se desee que sean accesibles desde fuera de la clase se de
ben declarar usando self. delante del nombre.
En python no existe el concepto de encapsulacin,22 por lo que el programador
debe ser responsable de asignar los valores a los atributos
>>> class Persona(object):
...
def __init__(self, nombre, edad):
...
self.nombre = nombre # Un atributo cualquiera
...
self.edad = edad # Otro atributo cualquiera
...
def mostrar_edad(self): # Es necesario que, al menos, tenga un parmetro,
generalmente: "self"
...
print self.edad # mostrando un atributo

...
def modificar_edad(self, edad): # Modificando Edad
...
if edad < 0 or edad > 150: # Se comprueba que la edad no sea menor d
e 0 (algo imposible), ni mayor de 150 (algo realmente difcil)
...
return False
...
else: # Si est en el rango 0-150, entonces se modifica la variable
...
self.edad = edad # Se modifica la edad
...
>>> p = Persona("Alicia", 20) # Instanciamos la clase, como se puede ver, no se
especifica el valor de "self"
>>> p.nombre # La variable "nombre" del objeto s es accesible desde fuera
'Alicia'
>>> p.nombre = "Andrea" # Y por tanto, se puede cambiar su contenido
>>> p.nombre
'Andrea'
>>> p.mostrar_edad() # Podemos llamar a un mtodo de la clase
20
>>> p.modificar_edad(21) # Y podemos cambiar la edad usando el mtodo especfico que
hemos hecho para hacerlo de forma controlada
>>> p.mostrar_edad()
21
Condicionales
Una sentencia condicional (if) ejecuta su bloque de cdigo interno slo si se cumple
cierta condicin. Se define usando la palabra clave if seguida de la condicin, y e
l bloque de cdigo. Condiciones adicionales, si las hay, se introducen usando elif
seguida de la condicin y su bloque de cdigo. Todas las condiciones se evalan secue
ncialmente hasta encontrar la primera que sea verdadera, y su bloque de cdigo aso
ciado es el nico que se ejecuta. Opcionalmente, puede haber un bloque final (la p
alabra clave else seguida de un bloque de cdigo) que se ejecuta slo cuando todas l
as condiciones fueron falsas.
>>> verdadero = True
>>> if verdadero: # No es necesario poner "verdadero == True"
...
print "Verdadero"
... else:
...
print "Falso"
...
Verdadero
>>> lenguaje = "Python"
>>> if lenguaje == "C": # lenguaje no es "C", por lo que este bloque se obviar y
evaluar la siguiente condicin
...
print "Lenguaje de programacin: C"
... elif lenguaje == "Python": # Se pueden aadir tantos bloques "elif" como se qu
iera
...
print "Lenguaje de programacin: Python"
... else: # En caso de que ninguna de las anteriores condiciones fuera cierta, s
e ejecutara este bloque
...
print "Lenguaje de programacin: indefinido"
...
Lenguaje de programacin: Python
>>> if verdadero and lenguaje == "Python": # Uso de "and" para comprobar que amb
as condiciones son verdaderas
...
print "Verdadero y Lenguaje de programacin: Python"
...
Verdadero y Lenguaje de programacin: Python
Bucle for
El bucle for es similar a foreach en otros lenguajes. Recorre un objeto iterable

, como una lista, una tupla o un generador, y por cada elemento del iterable eje
cuta el bloque de cdigo interno. Se define con la palabra clave for seguida de un
nombre de variable, seguido de in, seguido del iterable, y finalmente el bloque
de cdigo interno. En cada iteracin, el elemento siguiente del iterable se asigna
al nombre de variable especificado:
>>> lista = ["a", "b", "c"]
>>> for i in lista: # Iteramos sobre una lista, que es iterable
...
print i
...
a
b
c
>>> cadena = "abcdef"
>>> for i in cadena: # Iteramos sobre una cadena, que tambin es iterable
...
print i, # Aadiendo una coma al final hacemos que no introduzca un salto
de lnea, sino un espacio
...
a b c d e f
Bucle while
El bucle while evala una condicin y, si es verdadera, ejecuta el bloque de cdigo in
terno. Contina evaluando y ejecutando mientras la condicin sea verdadera. Se defin
e con la palabra clave while seguida de la condicin, y a continuacin el bloque de
cdigo interno:
>>> numero = 0
>>> while numero < 10:
...
print numero
...
numero += 1, #un buen programador modificara las variables de control a
l finalizar el ciclo while
...
0 1 2 3 4 5 6 7 8 9
Mdulos
Existen muchas propiedades que se pueden agregar al lenguaje importando mdulos, q
ue son "minicdigos" (la mayora escritos tambin en Python) que proveen de ciertas fu
nciones y clases para realizar determinadas tareas. Un ejemplo es el mdulo Tkinte
r, que permite crear interfaces grficas basadas en la biblioteca Tk. Otro ejemplo
es el mdulo os, que provee acceso a muchas funciones del sistema operativo. Los
mdulos se agregan a los cdigos escribiendo import seguida del nombre del mdulo que
queramos usar.
>>> import os # Mdulo que provee funciones del sistema operativo
>>> os.name # Devuelve el nombre del sistema operativo
'posix'
>>> os.mkdir("/tmp/ejemplo") # Crea un directorio en la ruta especificada
>>> import time # Mdulo para trabajar con fechas y horas
>>> time.strftime("%Y-%m-%d %H:%M:%S") # Dndole un cierto formato, devuelve la fe
cha y/o hora actual
'2010-08-10 18:01:17'
Sistema de objetos
En Python todo es un objeto (incluso las clases). Las clases, al ser objetos, so
n instancias de una metaclase. Python adems soporta herencia mltiple y polimorfism
o.

>>> cadena = "abc" # Una cadena es un objeto de "str"


>>> cadena.upper() # Al ser un objeto, posee sus propios mtodos
'ABC'
>>> lista = [True, 3.1415] # Una lista es un objeto de "list"
>>> lista.append(42L) # Una lista tambin (al igual que todo) es un objeto, y tamb
in posee sus propios mtodos
>>> lista
[True, 3.1415, 42L]
Biblioteca estndar
Python viene con "pilas incluidas"
Python tiene una gran biblioteca estndar, usada para una diversidad de tareas. Es
to viene de la filosofa "pilas incluidas" ("batteries included") en referencia a
los mdulos de Python. Los mdulos de la biblioteca estndar pueden mejorarse por mdulo
s personalizados escritos tanto en C como en Python. Debido a la gran variedad d
e herramientas incluidas en la biblioteca estndar, combinada con la habilidad de
usar lenguajes de bajo nivel como C y C++, los cuales son capaces de interactuar
con otras bibliotecas, Python es un lenguaje que combina su clara sintaxis con
el inmenso poder de lenguajes menos elegantes.
Implementaciones
Existen diversas implementaciones del lenguaje:
CPython es la implementacin original, disponible para varias plataformas en e
l sitio oficial de Python.
IronPython es la implementacin para .NET
Stackless Python es la variante de CPython que trata de no usar el stack de
C (www.stackless.com)
Jython es la implementacin hecha en Java
Pippy es la implementacin realizada para Palm (pippy.sourceforge.net)
PyPy es una implementacin de Python escrita en Python y optimizada mediante J
IT (pypy.org)
ActivePython es una implementacin privativa de Python con extensiones, para s
ervidores en produccin y aplicaciones de misin crtica desarrollado por ActiveState
Software.
Diferencias entre Python 2.x y Python 3.x
El 13 de febrero de 200923 se lanz una nueva versin de Python bajo el nombre clave
"Python 3000" o, abreviado, "Py3K".24 Esta nueva versin incluye toda una serie d
e cambios que requieren reescribir el cdigo de versiones anteriores. Para facilit
ar este proceso junto con Python 3 se ha publicado una herramienta automtica llam
ada 2to3.25 Una lista completa de los cambios puede encontrarse en Novedades de
Python 3.0.

S-ar putea să vă placă și