Presentación#

Introducción
Instalación y consideraciones prácticas
El Zen de Python
Cómo ejecutar código Python


Introducción#

Python fue concebido a finales de los años 80 como un lenguaje para ser interpretado orientado a la enseñanza. Con el paso del tiempo, Python se ha convertido en una herramienta esencial para todo tipo de programadores, ingenieros e investigadores, tanto en el ámbito académico como industrial.

El creador del lenguaje fue el informático holandés Guido van Rossum, conocido durante muchos años con el título de BDFL (Benevolent Dictator for Life). Esto era debido a que Guido tenía asignada la tarea de fijar las directrices sobre la evolución de Python, tarea de la que se retiró en 2018. El nombre Python se debe a su afición al programa de la BBC Monty Python’s Flying Circus, del célebre grupo de humoristas británico Monty Python.

El éxito de Python reside no solo en su simplicidad, sino que sobre él se ha construido una enorme cantidad de herramientas disponibles para todo tipo de dominios de aplicación.

Gran parte de los programas escritos en Python en computación científica y ciencia de datos está codificado utilizando el siguiente grupo de paquetes, consolidados casi como estándar:

  • NumPy, permite el almacenamiento y computación eficiente de matrices multidimensionales.

  • SciPy, contiene una enorme colección de herramientas de cálculo numérico.

  • Pandas, permite manipular, filtrar, agrupar y transformar datos, así como el sencillo acceso a las bases de datos que eventualmente puedan contenerlos.

  • Matplotlib, dispone de un conjunto de funciones para la creación de figuras y gráficos de gran calidad.

  • Scikit-Learn, proporciona un paquete de herramientas con los algoritmos más usuales de aprendizaje automático.

Además, si en un determinado momento un programador necesita de alguna herramienta para realizar algún tipo de tratamiento a un conjunto de datos con los que esté trabajando, es muy probable que, dentro de la amplia comunidad Python, esa herramienta ya esté programada y sea accesible en el dominio público.

Obviamente, para aprovechar el poder de este ecosistema, es necesario familiarizarse con el lenguaje Python.


Instalación y consideraciones prácticas#

La instalación de Python y el conjunto de bibliotecas asociadas que permiten trabajar con computación científica es una tarea simple independientemente del sistema operativo con el que se trabaje.

Python 2 vs Python 3#

Durante el curso usaremos la sintaxis de Python 3, que contiene sustantivas mejoras en el lenguaje, y que hacen que el código no sea compatible con el escrito en las diferentes versiones 2.x de Python.

Aunque Python 3.0 fue lanzado en 2008, su adopción fue lenta, principalmente en el ámbito científico y de desarrollo web. La causa principal se debió sobre todo al enorme esfuerzo en adaptar los paquetes y herramientas ya existentes para que fuesen compatibles con la nueva versión.

Desde principio del 2014, todos los paquetes relevantes dentro de los ecosistemas de computación científica y de la ciencia de datos ya son plenamente compatibles con ambas sintaxis, por lo que en el ámbito académico se ha optado por utilizar Python 3 por sus mejores características sintácticas.

Además, ¡Python 2 ha dejado de ser mantenido y mejorado desde el 1 de Enero de 2020!

Instalación con Anaconda#

Aunque hay muchas maneras de instalar Python, os sugerimos hacerlo a través de la distribución Anaconda, que es la utilizada por el Servicio de Informática de la EII en los ordenadores de laboratorios y aulas.

Anaconda es una distribución libre y abierta de los lenguajes Python y R, lenguaje que también se suele utilizar en diferentes asignaturas relacionadas con la Estadística. Anaconda está orientada a simplificar el despliegue y administración de los diversos paquetes de software. Viene acompañada con una extensa colección de paquetes y programas, muchos de ellos preinstalados. Entre estos, el IDE Spyder que usaremos ampliamente.

Las diferentes versiones de los paquetes se administran mediante un navegador o con el sistema de gestión de paquetes por línea de comandos conda.


El Zen de Python#

El Zen de Python es una colección de principios de software que influyen en el diseño del lenguaje de programación Python. Es la entrada informativa número 20 de las Propuestas de Mejoras de Python (PEP20, Python Enhancement Proposals).

Se incluye como un huevo de pascua virtual en el intérprete de Python, mostrándose al teclear el comando import this.

import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Una posible traducción sería:

  • Bello es mejor que feo.

  • Explícito es mejor que implícito.

  • Simple es mejor que complejo.

  • Complejo es mejor que complicado.

  • Plano es mejor que anidado.

  • Espaciado es mejor que denso.

  • La legibilidad es importante.

  • Los casos especiales no son lo suficientemente especiales como para romper las reglas.

  • Sin embargo, la practicidad le gana a la pureza.

  • Los errores nunca deberían pasar silenciosamente.

  • A menos que se silencien explícitamente.

  • Frente a la ambigüedad, evitar la tentación de adivinar.

  • Debería haber una, y preferiblemente solo una, manera obvia de hacerlo.

  • A pesar de que esa manera no sea obvia a menos que seas holandés.

  • Ahora es mejor que nunca.

  • A pesar de que nunca es muchas veces mejor que ahora mismo.

  • Si la implementación es difícil de explicar, es una mala idea.

  • Si la implementación es fácil de explicar, puede que sea una buena idea.

  • Los espacios de nombres son una gran idea, ¡tengamos más de esos!


Cómo ejecutar código Python#

Existen múltiples formas de utilizar Python dependiendo de cada situación y tarea. El hecho de ser un lenguaje que permite ser interpretado permite su manejo de forma interactiva, de una forma difícilmente alcanzable con otros lenguajes como C, C++, Java, etc.

Vamos a ver a continuación algunas de las múltiples formas en las que podemos ejecutar código Python.

El intérprete de Python#

Es la forma más básica de ejecutar código. Una vez instalado el lenguaje Python basta teclear python a través de la consola de comandos.

Hay que tener en cuenta que en el S.O. Windows, la distribución Anaconda puede no añadir automáticamente la ruta de acceso a Python a la variable de entorno PATH. Sin embargo, sí que instala una consola de comandos, Anaconda Prompt, desde la que se pueden ejecutar directamente no solo el intérprete de Python sino otros programas como Jupyter, Spyder o el gestor conda.

(base) C:\Users\nombre_del_usuario> python
Python 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Una vez que el intérprete está en funcionamiento, podemos comenzar a teclear y ejecutar fragmentos de código.

Python, en este contexto de uso, se utiliza normalmente para ejecutar secuencias cortas de operaciones, como si fuera una potente y versátil calculadora.

>>> 6*5
30
>>> z = 3
>>> z + 4
7

El intérprete de IPython#

Otra alternativa es el intérprete de IPython (Interactive Python), incluido en la distribución Anaconda, que posee muchas mejoras respecto al intérprete básico. Se ejecuta tecleando ipython en la línea de comandos:

(base) C:\Users\nombre_del_usuario> ipython
Python 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.0.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]:

La principal diferencia entre ambos intérpretes está en el símbolo de la línea de comandos (prompt): Python usa >>> por defecto, mientras que IPython usa símbolos numerados, como In [1]:.

Por lo demás, se puede utilizar de la misma forma que el intérprete básico:

In [1]: 6*5
Out[1]: 30

In [2]: z = 3

In [3]: z + 4
Out[3]: 7

Nótese que, además de las entradas, las salidas aparecen numeradas también.

Ipython posee un amplio abanico de características suplementarias, como los comandos mágicos, que también pueden utilizarse con las herramientas Jupyter Notebook y Spyder, ya que estos programas usan IPython como parte básica de su funcionamiento.

Guiones (scripts)#

A partir de cierto número de líneas (u órdenes), ejecutar fragmentos de código paso a paso es engorroso, poco práctico y sujeto a errores. En estos casos, tener almacenado en un fichero la secuencia de órdenes y ejecutarlas en un único paso es la forma lógica de proceder.

Por convención, los guiones Python tienen la extensión *.py.

Un archivo, editado por ejemplo con el Bloc de notas, llamado ejemplo.py podría ser el siguiente:

# Comentario: este archivo contiene un ejemplo de guion
print("Ejecutándose ejemplo.py")
x = 5
y = 3
print("El resultado de 5 + 3 es", x + y)

Para ejecutar este guion, debemos situarnos en el mismo directorio y teclear python ejemplo.py en la línea de comandos:

(base) C:\Users\nombre_del_usuario> python ejemplo.py
Ejecutándose ejemplo.py
El resultado de 5 + 3 es 8

Del ejemplo anterior podemos deducir que debemos realizar dos etapas para ejecutar el programa:

  1. Utilización de un editor más o menos convencional de textos

  2. Uso de la línea de comandos para ejecutar el guion

Una alternativa es utilizar un Entorno de Desarrollo Integrado, IDE (Integrated Development Environment), de la que Spyder es un buen ejemplo. Entre otros componentes posee un editor con herramientas tan útiles como autocompletado de código, terminales IPython, explorador de variables, depurador, chequeo de inconsistencias, etc. Spyder, incorporado en la distribución Anaconda, será la herramienta que utilizaremos para trabajar con guiones.

Jupyter Notebook#

Jupyter Notebook es un entorno interactivo que permite combinar en un mismo documento código con otros elementos, tales como texto enriquecido, imágenes, enlaces, ecuaciones matemáticas, etc. Jupyter es un nombre que proviene de jugar con los nombres de los lenguajes Julia, Python y R, pilares de muchos desarrollos en la computación científica y la ciencia de datos. También es un homenaje a los cuadernos de Galileo que registran el descubrimiento de los satélites de Júpiter.

Inicialmente los cuadernos (notebooks) formaban parte del proyecto IPython, de ahí que en muchas fuentes bibliográficas aparezcan mencionados como IPython notebooks. A partir de cierto momento, el Proyecto IPython se desgajó, de tal forma que en el Proyecto Jupyter se integraron los componentes que debían ser agnósticos respecto al lenguaje.

Los cuadernos se ejecutan localmente en un navegador sin necesidad de estar conectado a Internet. Tienen la extensión .ipynb (interactive python notebook).

La aplicación Jupyter Notebook tiene un componente fundamental, el núcleo (kernel), encargado de ejecutar el código contenido en el documento. Por defecto, se ejecuta el núcleo IPython, pero existen núcleos para otros muchos lenguajes.

Los notebooks están basando su éxito no solo en su utilidad como herramienta de desarrollo, sino como un extraordinario medio de compartir el trabajo científico o el material académico a través de una narrativa interactiva que mezcla código, texto, datos, etc.

Cada capítulo de este libro web corresponde a un cuaderno notebook, descargable a través de un repositorio GitHub accesible pulsando el botón situado arriba a la derecha de cada página web.

github