Introducción al lenguaje de programación Python

Trabajo previo

Tutoriales

Severance, C. (s. f.). PY4E - Python for Everybody. Recuperado 1 de enero de 2022, de https://www.py4e.com/ (Lecciones en https://www.py4e.com/lessons)

Resumen

En este capítulo, se introduce el lenguaje de programación Python.

El lenguaje de programación Python

Python es un lenguaje de programación de propósito general que ha alcanzado una gran popularidad en los últimos años. Fue declarado el lenguaje del año en 2020 y 2021 por el índice Tiobe de popularidad de lenguajes de programación, debido al crecimiento de su uso en diversas áreas, entre las que destacan la ciencia de datos y el aprendizaje automatizado, además de otras como desarrollo web, scripting y visualización de datos, entre muchas. Esta popularidad es respaldada por otras fuentes como el índice PYPL y el sitio de preguntas y respuestas para programadores Stack Overflow. Este último lo consideró, en 2017, el lenguaje de programación de mayor crecimiento en los países de alto ingreso, como se muestra en la Fig. 24.

../../_images/growth_major_languages.png

Fig. 24 Crecimiento de los principales lenguajes de programación en los países de alto ingreso. Fuente: [Rob17].

Python es ampliamente utilizado en enseñanza de la programación. En 2014, era el lenguaje más empleado en cursos introductorios de programación de las principales universidades de Estados Unidos, como puede apreciarse en el gráfico de la Fig. 25.

../../_images/top-languajes-universities.png

Fig. 25 Lenguajes de programación utilizados en los departamentos de ciencias de la computación de las principales universidades de Estados Unidos. Fuente: [Guo14].

Este uso en enseñanza se debe, entre otras razones, a que los programas en Python son más fáciles de leer y requieren menos líneas de código fuente que otros lenguajes de amplia difusión, tales como Java, C o C++.

Historia

Python fue creado por el programador holandés Guido van Rossum, quién concibió el diseño original del lenguaje a finales de la década de 1980 y dio a conocer la primera versión en 1991.

El nombre del lenguaje es un homenaje al grupo de comedia británico Monty Python. Según van Rossum, en diciembre de 1989 buscaba un proyecto de programación como “pasatiempo” durante los días cercanos a la navidad, por lo que decidió escribir un interpretador para un lenguaje de programación en el que había estado pensando recientemente. Escogió el nombre Python por encontrarse en un “humor ligeramente irreverente” y ser un gran aficionado al programa de televisión “El circo volador de Monty Python” (Monty Python’s Flying Circus) (Fig. 26).

../../_images/montypython.jpg

Fig. 26 El circo volador de Monty Python. Fuente: Internet Movie Database (IMDB).

La “cultura” de Python ocasionalmente hace referencia a Monty Python en tutoriales, ejemplos y otros materiales. Por ejemplo, en el uso de spam, ham y eggs como variables metasintéticas en sustitución de las tradicionales foo, bar y baz, en alusión al sketch Spam de Monty Python) (video del sketch).

Principales características del lenguaje

La filosofía de diseño de Python enfatiza la importancia de que los programas sean fáciles de leer, de manera que los programadores puedan entender rápidamente su propósito, control de flujo y funcionamiento. Esto facilita el mantenimiento de los programas existentes y disminuye la necesidad de crear otros nuevos.

Las siguientes son otras características importantes del lenguaje Python:

Principios de diseño

La filosofía de diseño de Python está resumida en una lista de 19 principios conocida como el Zen de Python que guían el uso del lenguaje. La aplicación de estos principios y el seguimiento de mejores prácticas y de idioms de programación, como los descritos en The Hitchhiker’s Guide to Python!, hacen que un programa se considere “pitónico” (pythonic). Los programadores que siguen la filosofía de Python son llamados pythonists, pythonistas o pythoneers.

Los principios de diseño se reflejan en la guía de estilo para código Python, la cual proporciona una serie de convenciones para la escritura de programas.

Licenciamiento

Python Software Foundation (PSF) es la organización sin fines de lucro que posee los derechos de propiedad intelectual del lenguaje Python y que maneja las licencias de software libre con las que se distribuye. Su misión es “promover, proteger y avanzar el lenguaje de programación Python, así como apoyar y facilitar el crecimiento de una comunidad diversa e internacional de programadores de Python”.

La implementación de referencia del interpretador de Python, llamada CPython, es software de código abierto (open source), lo que facilita que el desarrollo de Python sea conducido por una comunidad de programadores enlazada a través de Internet. Este modelo es seguido por la mayoría de las implementaciones del interpretador de Python. Una muestra muy representativa de este esquema de colaboración es el Python Package Index (PyPI), un repositorio para compartir componentes de software programados con Python, que a la fecha alberga más de 350000 proyectos.

Python 2 y Python 3

La versión 3 de Python fue liberada en 2008 y tiene diferencias en su sintaxis que la hacen incompatible con la versión 2. Desde entonces, se recomienda la migración de los programas en Python 2 a Python 3 y el uso de Python 3 para el desarrollo de nuevas aplicaciones. Ya no se brinda soporte oficial para Python 2. La PSF proporciona una guía oficial para migrar programas de Python 2 a Python 3.

Este curso se enfoca en Python 3. Cabe destacar que las diferencias de importancia entre ambas versiones son realmente pocas y un programador experimentado en el uso de Python 3 puede entender facilidad un programa en Python 2 y viceversa.

Aplicación en datos geoespaciales

Python ha tomado una gran importancia en el área del desarrollo de aplicaciones geoespaciales debido a su popularidad, “suavidad” de la curva de aprendizaje y abundancia de recursos de educación y consulta (ej. tutoriales, libros, listas de correo, foros de discusión). Todas estas son características que, entre otras, lo hacen muy apropiado para programadores que no son especialistas en ciencias de la computación, como es el caso de muchos de los usuarios de sistemas de información geográfica (SIG) y otros tipos de software geoespacial. De hecho, muchas de estas herramientas han seleccionado a Python como el lenguaje de preferencia para que sus usuarios amplíen o configuren la funcionalidad que ofrecen. Como ejemplos, pueden mencionarse las bibliotecas ArcPy para ArcGIS, PyQGIS para QGIS y PyGRASS para GRASS GIS.

En la Fig. 27, puede observarse como Python es ampliamente utilizado como lenguaje de scripting en software para manejo de datos geoespaciales.

../../_images/python-gis-software.png

Fig. 27 Uso de Python en software para manejo de datos geoespaciales. Fuente: [ZGC13].

Herramientas para desarrollo

Hay tres principales tipos de herramientas para desarrollar programas en Python: editores de texto, ambientes integrados de desarrollo y notebooks.

Editores de texto

Son editores para cualquier tipo de archivo de texto. Aquí se presentan los que proveen algunas facilidades para la edición de código fuente (ej. colores para diferenciar palabras clave o tabulación automática). Son fáciles de utilizar, pero no aportan mayores facilidades para el proceso de desarrollo. Son apropiados para programas pequeños y de no muy alta complejidad. Algunos de los más populares son:

Ambientes integrados de desarrollo

Un ambiente integrado de desarrollo (Integrated Development Environment [IDE]), es una aplicación informática que provee soporte integrado al proceso de programación. Típicamente, consiste de un editor de texto para el código fuente, herramientas para la construcción de archivos ejecutables y un depurador (debugger). Facilitan la elaboración de proyectos de mayor tamaño y complejidad. En el caso de Python, los IDE más populares son:

Notebooks

Son ambientes virtuales que combinan código fuente con texto, gráficos, videos y otros formatos. Se les considera muy apropiados para aprendizaje. El notebook más popular es el Jupyter Notebook, el cual proporciona una interfaz en ambiente web que permite la elaboración de documentos que permiten la ejecución interactiva de comandos en varios lenguajes (Python, R, Julia y Haskell, entre otros) y su documentación con el lenguaje de marcado Markdown.

La interfaz de un Jupyter Notebook se muestra en la Fig. 28.

../../_images/jupyter-interface.png

Fig. 28 Interfaz de un nuevo Jupyter Notebook.

Un notebook consiste de una secuencia de celdas que pueden llenarse con código fuente o con texto en Markdown, como en el ejemplo de la Fig. 29.

../../_images/jupyter-holamundo.png

Fig. 29 Programa “Hola Mundo” en un Jupyter Notebook.

Instalación

El interpretador de Pyhon puede obtenerse de varias formas. Una de la más usuales es en la página de descargas de Python.org, en donde pueden encontrarse instaladores para los diferentes sistemas operativos.

Con Anaconda/Miniconda

En este curso, se utilizará Anaconda, una distribución libre y de código abierto de Python y de otras herramientas utilizadas para ciencia de datos, como el lenguaje de programación R. Anaconda simplifica el manejo de paquetes, con sus diferentes versiones y dependencias, y está preconfigurada con más de 1500 paquetes preinstalados, lo que elimina la necesidad de aprender a instalar cada uno individualmente. Anaconda incorpora también el administrador de paquetes Conda. Como alternativa a Anaconda, puede utilizarse Miniconda, un instalador reducido de Anaconda.

La página de descargas de Anaconda/Miniconda proporciona instaladores para las diferentes versiones de Python y de los sistemas operativos (Windows, macOS, Linux). Luego de descargarse la opción deseada, deben seguirse las instrucciones especificadas en la página de documentación de la instalación.

Seguidamente, se detalla el procedimiento de instalación mediante Conda, el cual puede ejecutarse desde Linux, macOS o Windows. Conda es un administrador de paquetes que puede instalarse como parte de Anaconda o Miniconda (se recomienda esta última opción, por requerir menos recursos). Entre otras ventajas, conda permite el manejo de ambientes (environments), cada uno con sus propias versiones de los paquetes instalados.

Para instalar Python, Jupyter Notebook, y los módulos necesarios para el desarrollo de aplicaciones geoespaciales, ejecute los siguientes comandos desde una terminal:

# Actualización de conda
conda update conda

# Creación de un ambiente conda llamado geopython (puede usarse cualquier otro nombre)
conda create --name geopython

# Activación del ambiente
conda activate geopython

# Configuración del ambiente
conda config --env --add channels conda-forge
conda config --env --set channel_priority strict

# Instalación de módulos requeridos
conda install git python jupyter numpy pandas matplotlib plotly dash gdal fiona shapely geopandas rasterio folium

# Instalación de módulos opcionales
conda install streamlit

# Para iniciar la interfaz de Jupyter Notebook
jupyter notebook

# Desactivación del ambiente
conda deactivate

Una vez instalado el ambiente, puede activarse y desactivarse con conda activate geopython y conda deactivate respectivamente.

Ambientes de ejecución en la nube

Hay varias plataformas que ofrecen la posibilidad de ejecutar notebooks en la nube, como una alternativa a la ejecución en una computadora personal.

Google Colaboratory

Google Colaboratory (también llamado Colab) ofrece un ambiente gratuito para ejecutar los notebooks y almacenarlos en Google Drive.

Otros

Existen otros ambientes de ejecución en la nube, como Binder y Kaggle.

Referencias bibliográficas

Guo14

Philip Guo. Python Is Now the Most Popular Introductory Teaching Language at Top ­U.S. ­Universities. July 2014. URL: https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext (visited on 2022-01-20).

Rob17

David Robinson. The Incredible Growth of Python. September 2017. URL: https://stackoverflow.blog/2017/09/06/incredible-growth-python/ (visited on 2022-01-20).

ZGC13

Pietro Zambelli, Sören Gebbert, and Marco Ciolli. Pygrass: An Object Oriented Python Application Programming Interface (API) for Geographic Resources Analysis Support System (GRASS) Geographic Information System (GIS). ISPRS International Journal of Geo-Information, 2(1):201–219, March 2013. Number: 1 Publisher: Multidisciplinary Digital Publishing Institute. URL: https://www.mdpi.com/2220-9964/2/1/201 (visited on 2022-01-20), doi:10.3390/ijgi2010201.