Antes de empezar tengo que advertirte que
ningún lenguaje de programación, por simple que sea,
puede aprenderse en profundidad
en tan poco tiempo, a no ser que se requiera de experiencia previa en otros lenguajes. Dominar
la programación precisa de experiencia, lo cual a su vez requiere de un tiempo mínimo que permita
afianzar las estructuras mentales necesarias para entender la secuencia lógica a seguir para
desarrollar un programa o proyecto de software.
El
objetivo de este artículo no es enseñar a programar, sino tratar de
exponer en 10 minutos los elementos más importantes del lenguaje
Python, sería algo así como una mezcla entre un
tutorial y una
cheatsheet. Haré uso de una
REPL para exponer los
ejemplos, con lo que
podrás modificar
y jugar con ellos sin tener que salir de la entrada. Es totalmente
recomendable seguir el artículo en un ordenador o tablet, ya que la REPL
por limitaciones de espacio no es tan cómoda de utilizar en un móvil.
Características de Python
Python un lenguaje
multiparadigma, que soporta
orientación a objetos,
programación imperativa y, en menor medida,
programación funcional. Es
interpretado, de tipado
dinámico y
multiplataforma.
Lo básico de Python
La
sintaxis de Python es extremadamente “
limpia“, no se requiere de ningún caracter que indique el final de una secuencia y los bloques se definen a través de la
indentación del código. Los
comentarios de una sola línea se definen con el carácter almohadilla
(#) y las cadenas de multiples líneas
(“””) se suelen emplear para escribir comentarios multilínea.
Los
operadores aritméticos +,
– y
/ significan en Python lo mismo que en matemáticas. El asterisco
(*) es el símbolo para la multiplicación, el
% se usa para obtener el
módulo,
// para
división entera y
** es el símbolo para las
potencias. También disponemos de los operadores
incrementar (+=) y
decrementar (-=).
Existen tres
operadores lógicos:
and,
or, y
not. La semántica (significado) de estos operadores es similar a sus significados en inglés (en español “y”, “o” y “no”).
La
asignación de valores, como en la mayoría de lenguajes, se realiza con el símbolo “igual”
(=). La doble igualdad
(==) se usa para comprobar que
dos valores son iguales, además disponemos de estos
operadores de comparación: distinto que
(!=), mayor que
(>), menor que
(<), mayor o igual
(>=) y menor o igual
(<=).
Tipos de datos
Los tipos de datos básicos en Python son los
numéricos formados por
enteros, los
reales y los
complejos; las
cadenas de texto y los
booleanos. La función
type nos devuelve el tipo:
Estructuras de control de flujo
Las
sentencias de control de flujo, son bloques de código en los que se agrupan instrucciones de manera controlada. Por un lado tenemos las
estruturas condicionales (
if, if .. else, if ..elif ..else) y por otro las
estructuras iterativas (
for, while).
Funciones
Una
función
no es más que un bloque de código reutilizable encargado de realizar
una determinada tarea. Para definir una función en Python debemos
utilizar la palabra reservada “
def” seguido del nombre de la función y los parámetros los indicamos entre parentesis. Veamos varios ejemplos:
Funciones, parametros *args y **kwargs
En
el ejemplo anterior hemos visto varias formas de definir y ejecutar a
las funciones en Python, ya sea con parámetros por con valores por
defecto o keywords como argumentos. Nos faltaría ver como llamarlas con
colecciones como argumentos,
una forma muy común de pasar valores a las funciones en Python, y que
en muchas ocasiones cuesta entender. Para ello debemos tener claro que
las
tupla como colección de argumentos se define con
*args y el
diccionario con
**kwargs. Veamos un ejemplo en la REPL:
Manipulación de cadenas
Las cadenas
en Python pueden definirse entre comillas simples o dobles. En la REPL
se muestra un ejemplo de la mayoría de las operaciones que podemos
realizar ellas:
Estructuras de datos (colecciones)
Las
colecciones son un tipo de datos diseñados específicamente para
agrupar objetos y llevar a cabo tareas con ellos. Las estructuras de datos más utilizadas en Python son las
listas,
tuplas (listas inmutables) y los
diccionarios, aunque personalmente también suelo usar mucho los
conjuntos (sets).
No
todas las estructuras de datos exponen exactamente las mismas
operaciones, por ejemplo una lista no deja buscar por clave (si bien sí
por índice) y un conjunto no deja buscar ni por una cosa ni por otra.
El
siguiente playground está dividido en tres ficheros, main.py desde el
que se importa listas.py y diccionarios.py, para ver los resultados de
uno u otro, elimina o comenta su respectivo import.
Clases y objetos
En programación orientada a objetos (POO),
un objeto es una entidad que
agrupa un estado y una funcionalidad
relacionada. El estado se define a través de las variables denominadas
atributos y la funcionalidad a través de funciones denominadas en POO
cómo métodos. Por otro lado,
una clase, no es más que una plantilla genérica a partir de la cuál instanciamos los objetos. Dicho de otra manera, una clase
es una abstracción en la que se define el comportamiento que va a tener el objeto.
En Python, las
clases se declaran mediante la palabra reservada
class seguida del nombre de la clase, la clase base de la cual hereda, si no extiende de ninguna debe hacerlo de
object; a continuación dos puntos (:), luego el indentado y el cuerpo de la clase.
El método
constructor de la clase se define con la palabra clave
__init__ y al igual que el resto de métodos definidos en la clase recibe como primer parámetro
self, el interprete de python requiere de este argumento para referenciarlos como métodos de instancia.
Excepciones
No soy muy fan de usar excepciones, pero es cierto que con Python hay momentos en los que su uso no se puede obviar. Las
excepciones en Python se manejan esencialmente con
try-except:
Depurando con PDB
El
depurador por defecto de python es
pdb , nos permite inspeccionar nuestro código de forma interactiva. La forma más simple de utilizarlo es ejecutando
pdb.set_trace()
: