Python en Resumen
Python en Resumen
Python en Resumen
“Python es un lenguaje de programación de alto nivel cuya filosofía
hace hincapié en una sintaxis muy limpia y que favorezca un código
legible. Se trata de un lenguaje de programación multiparadigma ya
que soporta orientación a objetos, programación imperativa y, en
menor medida, programación funcional. Es un lenguaje interpretado,
usa tipado dinámico, es fuertemente tipado y es multiplataforma.”1
Python presenta una serie de ventajas que lo hacen muy atractivo,
tanto para su uso profesional como para el aprendizaje de la
programación. Entre las más interesantes tenemos:
● Python es un lenguaje muy expresivo: Los programas Python son
muy compactos; un programa Python suele ser bastante más corto
que su equivalente en lenguajes como C.
● Python es muy legible: La sintaxis de Python es muy elegante y
permite la escritura de programas cuya lectura resulta muy
fácil.
● Python ofrece un entorno interactivo que facilita la
realización de pruebas.
● El entorno de ejecución de Python detecta muchos de los
errores de programación que escapan al control de los
compiladores y proporciona información muy rica para
detectarlos y corregirlos.
● Python puede usarse como lenguaje imperativo procedimental o
como lenguaje orientado a objetos.
● Posee un rico juego de estructuras de datos que se pueden
manipular de modo sencillo.
Python ha sido diseñado por Guido van Rossum y esté en un proceso
de continuo desarrollo por una gran comunidad de desarrolladores.
Aproximadamente cada seis meses se hace pública una nueva versión.
Pero no es que cada medio año se cambie radicalmente el lenguaje de
programación, sino que éste se enriquece manteniendo en lo posible
la compatibilidad con versiones anteriores.
Una ventaja fundamental de Python es la gratuidad de su intérprete.
Puedes descargarse el intérprete de la página web2. El intérprete
de Python tiene versiones para prácticamente cualquier plataforma
en uso: sistemas PC bajo Linux, sistemas PC bajo Microsoft Windows,
sistemas Macintosh de Apple, etc.
EJECUCIÓN DE PROGRAMAS PYTHON.
Existen dos formas de ejecutar código Python. Podemos escribir líneas de
código en el intérprete y obtener una respuesta del intérprete para cada
línea (sesión interactiva) o bien podemos escribir el código de un
programa en un archivo de texto y ejecutarlo.
Así por ejemplo podemos digitar en la consola:
print "Hola Mundo"
1 http://es.wikipedia.org/wiki/Python
2 http://www.python.org
Y la respuesta instantanea sera la impresión del texto "Hola Mundo" en la
consola, pero podemos esribir lo mismo en un editor de texto y guadarlo
con la extensión *.py y ejecutarlo obteniendo identicos resultados.
Para facilitar la digitación de programas se pueden utilizar
herramientas, es así que asoma el concepto de IDE (Entorno de Desarrollo
Integrado).
TIPOS DE DATOS BÁSICOS EN PYTHON.
En Python los tipos básicos se dividen en:
Números, como pueden ser 3 (entero), 15.57 (de coma flotante) o 7 + 5j
(complejos). Cadenas de texto, como “Hola Mundo”. Valores booleanos: True
(cierto) y False (falso).
NÚMEROS
Enteros
Los números enteros son aquellos números positivos o negativos que no
tienen decimales. En Python se pueden representar mediante el tipo int
(de integer, entero) o el tipo long (largo).
La única diferencia es que el tipo long permite almacenar números más
grandes. Es aconsejable no utilizar el tipo long a menos que sea
necesario, para no malgastar memoria. Al asignar un número a una variable
esta pasará a tener tipo int, a menos que el número sea tan grande como
para requerir el uso del tipo long.
Reales
Los números reales son los que tienen decimales. En Python se expresan
mediante el tipo float. Python implementa su tipo float a bajo nivel
mediante una variable de tipo double de C, es decir, utilizando 64 bits,
luego en Python siempre se utiliza doble precisión.
También se puede utilizar notación científica, y añadir una e para
indicar un exponente en base 10. Por ejemplo:
real = 0.1e3
Complejos
Los números complejos son aquellos que tienen parte imaginaria. La mayor
parte de lenguajes de programación carecen de este tipo, aunque sea muy
utilizado por ingenieros y científicos en general, llamado complex en
Python . Los números complejos en Python se representan de la siguiente
forma:
complejo = 2.1 + 7.8j
CADENAS
Las cadenas no son más que texto encerrado entre comillas simples
(‘cadena’) o dobles (“cadena”). Dentro de las comillas se pueden añadir
caracteres especiales escapándolos con \, como \n, el carácter de nueva
línea, o \t, el de tabulación.
Una cadena puede estar precedida por el carácter u o el carácter r, los
cuales indican, respectivamente, que se trata de una cadena que utiliza
codificación Unicode y una cadena raw. Las cadenas raw se distinguen de
las normales en que los caracteres escapados mediante la barra invertida
(\) no se sustituyen por sus contrapartidas.
unicode = u”äóè”
raw = r”\n”
También es posible encerrar una cadena entre triples comillas. De esta
forma podremos escribir el texto en varias líneas, y al imprimir la
cadena, se respetarán los saltos de línea que introdujimos sin tener que
recurrir al carácter \n.
triple = “““primera linea
esto se vera en otra linea”””
BOOLEANOS
Una variable de tipo booleano sólo puede tener dos valores: True (cierto)
y False (falso). Estos valores son especialmente importantes para las
expresiones condicionales y los bucles. En realidad el tipo bool es una
subclase del tipo int.
OPERADORES
Operadores Aritméticos
Veamos ahora qué podemos hacer con nuestros números usando los operadores
por defecto. Para operaciones más complejas podemos recurrir al módulo
math3. En la Tabla 001 se muestran las operaciones aritméticas básicas de
Python.
Operación Operador
Suma +
Resta
Negación
Multiplicación *
División /
Exponente **
División Entera //
Módulo de la %
División
Tabla 001: Operadores Aritmeticos de Python
Operadores Lógicos
En la Tabla 002 se muestran los distintos tipos de operadores con los que
podemos trabajar con valores booleanos, los llamados operadores lógicos o
condicionales:
Operación Operador
Conjunción (y) and
Disyunción (o) or
Negación (no) not
Tabla 002: Operadores Logicos de Python
Operadores Relacionales
Podemos obtener valores booleanos como resultado de expresiones que
utilizan operadores relacionales (comparaciones entre valores) la Tabla
003 muestra los Operadores Relacionales que Python maneja:
Operación Operador
Igual ==
Distinto !=
3 Módulo pre programado para operaciones aritméticas
Menor que <
Mayor que >
Menor o Igual <=
Mayor o Igual >=
Tabla 003: Operadores Relacionales de Python
COLECCIONES
Listas
La lista es un tipo de colección ordenada. Sería equivalente a lo que en
otros lenguajes se conoce por arrays, o vectores. Las listas pueden
contener cualquier tipo de dato: números, cadenas, booleanos, ... y
también listas.
Crear una lista es tan sencillo como indicar entre corchetes, y separados
por comas, los valores que queremos incluir en la lista:
l = [22, True, “una lista”, [1, 2]]
Podemos acceder a cada uno de los elementos de la lista escribiendo el
nombre de la lista e indicando el índice del elemento entre corchetes.
Tuplas
Para definir una tupla se utilizan paréntesis.
t = (1, 2, True, “python”)
En realidad el constructor de la tupla es la coma, no el paréntesis, pero
el intérprete muestra los paréntesis, y nosotros deberíamos utilizarlos,
por claridad.
Para referirnos a elementos de una tupla, como en una lista, se usa el
operador []. Podemos utilizar este operador debido a que las tuplas, al
igual que las listas, forman parte de un tipo de objetos llamados
secuencias.
Su diferencia con las listas estriba en que las tuplas no poseen
mecanismos de modificación. Además son inmutables, es decir, sus valores
no se pueden modificar una vez creada; y tienen un tamaño fijo. A cambio
de estas limitaciones las tuplas son más “ligeras” que las listas.
Diccionarios
Los diccionarios, también llamados matrices asociativas, deben su nombre
a que son colecciones que relacionan una clave y un valor. Por ejemplo,
veamos un diccionario de películas y directores:
d = {“Love Actually “: “Richard Curtis”, “Kill Bill”: “Tarantino”}
El primer valor se trata de la clave y el segundo del valor asociado a la
clave. Como clave podemos utilizar cualquier valor inmutable: podríamos
usar números, cadenas, booleanos, tuplas, ... pero no listas o
diccionarios, dado que son mutables. Esto es así porque los diccionarios
se implementan como tablas hash, y a la hora de introducir un nuevo par
clavevalor en el diccionario se calcula el hash de la clave para después
poder encontrar la entrada correspondiente rápidamente.
Al igual que en listas y tuplas también se puede utilizar este operador
para reasignar valores.
d[“Kill Bill”] = “Quentin Tarantino”
SENTENCIAS CONDICIONALES
Si un programa no fuera más que una lista de órdenes a ejecutar de forma
secuencial, una por una, no tendría mucha utilidad.
if
La forma más simple de un estamento condicional es un if seguido de la
condición a evaluar, dos puntos (:) y en la siguiente línea indentado, el
código a ejecutar en caso de que se cumpla dicha condición.
if fav == “mundogeek.net”:
print “Tienes buen gusto!”
Debemos asegurarnos de identar el código tal cual se ha hecho en el
ejemplo, es decir, aseguraros de pulsar Tabulación antes de las dos
órdenes print, dado que esta es la forma de Python de saber que nuestra
intención es la de que el print se ejecuten sólo en el caso de que se
cumpla la condición. La indentación en Python se trata de una obligación,
y no de una elección.
if ... else
¿Qué haríamos si quisiéramos que se ejecutaran unas ciertas órdenes en
el caso de que la condición no se cumpliera?. Podríamos añadir otro if
que tuviera como condición la negación del primero; pero el condicional
tiene una segunda construcción mucho más útil:
if fav == “mundogeek.net”:
print “Tienes buen gusto!”
else:
print “Vaya, que lástima”
if ... elif ... elif ... else
La instrucción elif es una condicional el cual nos permite verificar una
segunda opción en el caso de que el flujo se corresponda al caso
contrario de una condición inicial.
A if C else B
Es una forma compacta de expresar un if else. En esta construcción se
evalúa el predicado C y se devuelve A si se cumple o B si no se cumple: A
if C else B. Veamos un ejemplo:
var = “par” if (num % 2 == 0) else “impar”
BUCLES
Mientras que los condicionales nos permiten ejecutar distintos fragmentos
de código dependiendo de ciertas condiciones, los bucles nos permiten
ejecutar un mismo fragmento de código un cierto número de veces.
while
El bucle while (mientras) ejecuta un fragmento de código mientras se
cumpla una condición.
edad = 0
while edad < 18:
edad = edad + 1
print “Felicidades, tienes “ + str(edad)
for ... in
En Python for se utiliza como una forma genérica de iterar sobre una
secuencia. Y como tal intenta facilitar su uso para este fin. Este es el
aspecto de un bucle for en Python:
secuencia = [“uno”, “dos”, “tres”]
for elemento in secuencia:
print elemento
Leamos la cabecera del bucle como si de lenguaje natural se tratara:
“para cada elemento en secuencia”. Y esto es exactamente lo que hace el
bucle.
FUNCIONES
Una función es un fragmento de código con un nombre asociado que realiza
una serie de tareas y devuelve un valor. Además de ayudarnos a programar
y depurar dividiendo el programa en partes las funciones también permiten
reutilizar código. En Python las funciones se declaran de la siguiente
forma:
def mi_funcion(param1, param2):
Es decir, la palabra clave def seguida del nombre de la función y entre
paréntesis los argumentos separados por comas. A continuación, en otra
línea, indentado y después de los dos puntos tendríamos las líneas de
código que conforman el código a ejecutar por la función.
También podemos encontrarnos con una cadena de texto como primera línea
del cuerpo de la función. Estas cadenas se conocen con el nombre de
docstring4 y sirven a modo de documentación de la función.
def mi_funcion(param1, param2):
“““Esta funcion imprime los dos valores pasados
como parametros”””
También es posible definir funciones con un número variable de
argumentos, o bien asignar valores por defecto a los parámetros para el
caso de que no se indique ningún valor para ese parámetro al llamar a la
función. Los valores por defecto para los parámetros se definen situando
un signo igual después del nombre del parámetro y a continuación el valor
por defecto:
def imprimir(texto, veces = 1):
Para definir funciones con un número variable de argumentos colocamos un
último parámetro para la función cuyo nombre debe precederse de un
signo*:
def varios(param1, param2, *otros):
Esta sintaxis funciona creando una tupla en la que se almacenan los
valores de todos los parámetros extra pasados como argumento. También se
puede preceder el nombre del último parámetro con **, en cuyo caso en
lugar de una tupla se utilizaría un diccionario.
Para devolver valores, se utiliza la palabra clave return:
def sumar(x, y):
return x + y
También podríamos pasar varios valores que retornar a return.
def f(x, y):
return x * 2, y * 2
a, b = f(1, 2)
Sin embargo esto no quiere decir que las funciones Python puedan devolver
varios valores, lo que ocurre en realidad es que Python crea una tupla,
cuyos elementos son los valores a retornar, y esta única variable es la
4 Cadena de documentación
que se devuelve.
ORIENTACIÓN A OBJETOS
La Programación Orientada a Objetos es un paradigma de programación en el
que los conceptos del mundo real relevantes para nuestro problema se
modelan a través de clases y objetos.
Clases y objetos
En Python las clases se definen mediante la palabra clave class seguida
del nombre de la clase, dos puntos (:) y a continuación, indentado, el
cuerpo de la clase. Como en el caso de las funciones, si la primera línea
del cuerpo se trata de una cadena de texto, esta será la cadena de
documentación de la clase o docstring.
class Coche:
“””Abstraccion de los objetos coche.”””
def __init__(self, gasolina):
self.gasolina = gasolina
print “Tenemos”, gasolina, “litros”
def arrancar(self):
if self.gasolina > 0:
print “Arranca”
else:
print “No arranca”
Como vemos el primer parámetro de los métodos de la clase es siempre
self. Esto sirve para referirse al objeto actual. Este mecanismo es
necesario para poder acceder a los atributos y métodos del objeto.
Herencia
En un lenguaje orientado a objetos cuando hacemos que una clase
(subclase) herede de otra clase (superclase) estamos haciendo que la
subclase contenga todos los atributos y métodos que tenía la superclase.
Para indicar que una clase hereda de otra se coloca el nombre de la clase
de la que se hereda entre paréntesis después del nombre de la clase:
class Bateria(Instrumento):
pass
class Guitarra(Instrumento):
pass
Herencia múltiple
En Python, a diferencia de otros lenguajes como Java o C#, se permite la
herencia múltiple, es decir, una clase puede heredar de varias clases a
la vez. Para declarar la herencia multiple basta con enumerar las clases
de las que se hereda separándolas por comas:
class Cocodrilo(Terrestre, Acuatico):
Polimorfismo
La palabra polimorfismo, del latín polys morphos (varias formas), se
refiere a la habilidad de objetos de distintas clases de responder al
mismo mensaje. Esto se puede conseguir a través de la herencia: un objeto
de una clase derivada es al mismo tiempo un objeto de la clase padre, de
forma que allí donde se requiere un objeto de la clase padre también se
puede utilizar uno de la clase hija.
Python, al ser de tipado dinámico, no impone restricciones a los tipos
que se le pueden pasar a una función, a diferencia de lenguajes de tipado
estático como Java o C++, el polimorfismo en Python no es de gran
importancia.
Encapsulación
La encapsulación se refiere a impedir el acceso a determinados métodos y
atributos de los objetos estableciendo así qué puede utilizarse desde
fuera de la clase. Esto se consigue en otros lenguajes de programación
utilizando modificadores de acceso que definen si cualquiera puede
acceder a esa función o variable o si está restringido el acceso a la
propia clase.
En Python no existen los modificadores de acceso, y lo que se suele
hacer es que el acceso a una variable o función viene determinado por su
nombre: si el nombre comienza con dos guiones bajos (y no termina
también con dos guiones bajos) se trata de una variable o función
privada, en caso contrario es pública.
Clases de “nuevoestilo”
Para que una clase sea de nuevo estilo es necesario, por ahora, que
extienda una clase de nuevoestilo. En el caso de que no sea necesario
heredar el comportamiento o el estado de ninguna clase, se puede heredar
de object, que es un objeto vacio que sirve como base para todas las
clases de nuevo estilo.
RESUMEN REALIZADO POR:
J. D. VACACELA R.
Tomado de:
PYTHON PARA TODOS
por Raúl González Duque
Este libro se distribuye bajo una licencia Creative Commons
Reconocimiento 2.5 España. Usted es libre de: copiar, distribuir y
comunicar públicamente la obra hacer obras derivadas
Bajo las condiciones siguientes: Reconocimiento. Debe reconocer y dar
crédito al autor original (Raúl González Duque)
DESCARGADO DE:
http://mundogeek.net/tutorialpython/