Septiembre de 2019

Volumen 34, número 9

[El programador ocupado]

Introducción a Python

Por Ted Neward | Septiembre de 2019

Ted NewardEn los últimos años, se ha generalizado el uso de Python y algunas encuestas y sondeos lo han clasificado como el nuevo lenguaje más popular. Aunque es dudoso que Python llegue a dominar el mundo, como dicen, sí parece tener un control relativamente fuerte sobre el mundo de la ciencia de datos y de la inteligencia artificial y el aprendizaje automático; y solo por ese motivo, Python es un lenguaje interesante que debe estudiarse.

La combinación del modelo de programación y la sintaxis relativamente simples de Python con los módulos extensibles que lo conectan al sistema operativo subyacente justifica un cambio oportuno y útil a un nuevo tema para esta columna. En los próximos números, analizaré la sintaxis y la semántica de Python, algunas de las bibliotecas más interesantes del ecosistema de Python y, después…, ¿quién sabe?

Lo primero es lo primero.

No obstante, antes de entrar de lleno en este análisis, debo hacer una declinación de responsabilidades: Al igual que con casi todas las columnas que escribo, no voy a sugerir ni por un momento que deba reemplazar su código actual de C# (o Visual Basic) por Python. Python es una herramienta útil que debe tener a mano, igual que otras muchas cosas, y, si se encuentra en una situación en la que parezca adecuado usarla, hágalo. Pero no se me ocurre nada que se pueda hacer con Python que no se pueda hacer también con C#. Solo se usan de forma diferente, eso es todo.

Además, me gustaría aclarar una creencia popular errónea: a pesar de la insistencia de la comunidad de Python en usar términos relacionados con serpientes o reptiles para los paquetes y bibliotecas, el nombre del lenguaje, en realidad, no se debe a la enorme serpiente que habita en varias selvas del mundo. De hecho, el nombre de Python procede del otro Python famoso: Monty, como en El circo volador de Monty Python, el famoso grupo humorístico británico de hace unas décadas. El colmo en la cultura de Python es usar citas y ejemplos de sus películas o episodios en cualquier código de ejemplo, y los buenos pythonistas nunca pierden la oportunidad de dejar caer alguna que otra ocurrencia. En el sitio web incluso se insiste en ello.

Queda advertido.

Introducción

Empezar a usar Python es mucho más fácil de lo que podría parecer en principio, por dos motivos básicos. Uno es que hay un versión de Python disponible para instalarla con el instalador de Visual Studio sin necesidad de configuración. Es una versión empaquetada de Python junto con herramientas de administración del entorno que se denomina Anaconda. Dentro de un momento, hablaré de lo que significa y lo que implica. El segundo motivo es que ahora, gracias al Subsistema de Windows para Linux (WSL), se puede acceder a Python escribiendo un sencillo comando en la línea de comandos del shell de Bash y puede usar el administrador de paquetes que desee. Por ejemplo, si ha instalado Ubuntu en el entorno de WSL, puede acceder a Python fácilmente abriendo un símbolo del sistema del shell de Bash de Ubuntu y escribiendo “sudo apt-get install python3”. Además, a partir de mayo, si ejecuta Windows 10, Python está disponible en la Tienda Windows. Consulte bit.ly/2JMxC3A para obtener más información.

Por supuesto, hay muchas más opciones disponibles, si no le agrada ninguna de estas. En el sitio web de Python, hay disponible un instalador basado en Windows para aquellos que prefieran tener una instalación de Python que venga directamente del origen. O bien, para aquellos que quieran tener solo y exclusivamente el código fuente, Python es (al igual que la mayoría de los lenguajes actuales) un proyecto de código abierto hospedado en GitHub y se puede compilar desde cero. Aunque cualquiera de estas opciones podría haber sido la estrategia de preferencia hace una década, el éxito relativamente reciente que ha tenido la incorporación de los administradores de paquetes como parte central del lenguaje (empezando por Ruby y gems, después Node y npm, por no hablar de Java y Maven, .NET y NuGet, etc.) significa que una instalación actual de Python debe ir acompañada de una herramienta de administración de paquetes, que en el mundo de Python se denomina “pip”. A medida que ha ido creciendo el interés por Python, también han surgido otros sistemas de implementación, incluido el mencionado Anaconda y su utilidad “conda”. No hay ninguna necesidad real de estresarse a la hora de decidir entre ellos, ya que los dos llevan al mismo lugar. En general, si utiliza la instalación de Anaconda que viene con Visual Studio, usará conda y, si elige el instalador del sitio web de Python, usará pip.

El otro factor que hay que tener en cuenta es que hay dos variantes de Python con dos versiones principales cada una. La primera se debe a que Python está disponible en versiones de 64 y 32 bits; las diferencias en este caso son obvias. La segunda se debe a que Python se encuentra oficialmente en un proceso de transición complejo, el de pasar de Python 2 a Python 3. Por motivos que a nosotros no nos importan, Guido von Rossum, el creador de Python, decidió que tenía que realizar algunos cambios importantes en el lenguaje y, oficialmente, aumentó el número de versión cuando los implementó. Se esperaba que todo el mundo llevara a cabo la transición con relativa rapidez, pero no ha sido así. O, más bien, está en proceso todavía. Yo usaré Python 3 para esta serie, porque los proyectos nuevos de Python deberían iniciarse con Python 3, pero puede encontrar algún que otro paquete o biblioteca que aún requiera Python 2.

Una vez instalado Python, es el momento de probarlo. Si ha optado por instalar Anaconda, elija el elemento del menú Inicio “Anaconda Prompt” (Símbolo del sistema de Anaconda). En realidad, Visual Studio 2019 lo instala como “Python Prompt” (Símbolo del sistema de Python). Se abrirá un símbolo del sistema con el entorno establecido para Anaconda Python y tendrá un aspecto un poco extraño, porque tendrá algo parecido a “(base)” delante del símbolo del sistema normal basado en directorios (“C:\Users\Ted>” en mi máquina). Esto se debe a que Anaconda está administrando diferentes “entornos”, algo de lo que hablaré con más detalle en una próxima columna. Por ahora, solo escriba “python” para abrir el bucle Read-Evaluate-Print Loop (REPL) de Python, el entorno interactivo, que le proporcionará un símbolo del sistema “>>>” después de imprimir un banner de versión.

Este es el momento en el que debemos honrar a los dioses de la informática con el saludo habitual:

print("Hello, Python world")

Si escribe esto en el entorno REPL, imprimirá de inmediato el saludo y proporcionará otro símbolo del sistema “>>>”. Si lo desea, puede ponerlo en un archivo (hello.py) y ejecutarlo desde el símbolo del sistema de Anaconda (“python hello.py”). En cualquier caso, habrá hecho lo que debía y ya puede poner “programador de Python” en su currículum.

Si quiere que el mensaje se capture en una variable (quizá para reutilizarlo más tarde), debe escribirlo así:

message = "Hello again, "
message += "Python world"
print(message)

Observe que no es necesario declarar la variable local, message, antes de usarla por primera vez y tampoco hay ninguna “palabra clave declarativa”, como “var” (o “let” o “const”) de JavaScript. Python admite cadenas, obviamente, además de valores booleanos, valores numéricos, listas, tuplas, conjuntos (listas que no permiten duplicación) y diccionarios (listas de tuplas, o pares clave-valor si lo prefiere) como tipos integrados. En futuras columnas podrá ver cómo crear tipos de objetos personalizados y explorar lo que significa cada uno de estos tipos primitivos con más detalle a medida que avancemos. Las variables no tienen tipo, lo que significa que a la variable local se le puede asignar cualquier tipo de valor en cualquier momento, así:

# By the way, this is a comment
message = "Hello again, "
message += "Python world"
print(message)
message = 5
print(message)

Sin embargo, esto también plantea un aspecto crítico que debe tenerse en cuenta: Cada vez que se introduce una variable por primera vez, debe tener un valor asignado, o Python considerará que está intentando hacer referencia a una variable definida previamente. No obstante, esto es solo un pequeño inconveniente, teniendo en cuenta que siempre puede asignar cero o cadenas vacías o lo que parezca razonable como valor predeterminado.

Una última observación rápida: Como se indica en la primera línea del ejemplo, el símbolo de almohadilla es el carácter de comentario de final de línea en Python. Sin embargo, a diferencia de muchos otros lenguajes, Python no tiene un símbolo de comentario de varias líneas, por lo que comentar secciones grandes de código es un poco menos sencillo. No obstante, esto está totalmente en consonancia con el mantra de Python: “Solo hay una manera de hacerlo”; por tanto, solo hay una forma de comentar el código.

Ejecución de Python

Este código se puede ejecutar de varias formas.

En primer lugar, desde una línea de comandos de Windows (suponiendo que Python esté en la variable de entorno PATH) se pueden ejecutar los scripts simplemente pasando el nombre del archivo de Python al intérprete; por ejemplo, “python hello.py”. Probablemente, esta será la forma de ejecutar al menos la mitad de las aplicaciones de Python que escriba, sobre todo si utiliza la herramienta para crear grafos o ejecutar servidores web.

No obstante, una variación interesante de esta opción, solo para Windows, es que, si usa los instaladores basados en Windows para poner Python en su máquina (en lugar de compilar el código fuente), Python se registrará en el Registro de Windows y reclamará la extensión de archivo “.py”. Además, si anexa “.PY” a la variable de entorno “PATHEXT” en un símbolo del sistema de Windows, podrá ejecutar scripts de Python como si fuesen directamente ejecutables (porque lo serán, ya que esta variable de entorno contiene las extensiones de todos los archivos que se consideran directamente ejecutables, como EXE, COM, BAT, CMD, etc.). Tenga en cuenta que este comportamiento concreto es específico de Windows y, de ningún modo, está limitado a Python. Cualquier extensión de archivo se puede registrar en la variable de entorno PATHEXT y ser “directamente ejecutable”, siempre y cuando esté configurada la relación de la aplicación con la extensión de archivo en el Registro.

En un sistema Unix, sin embargo, siempre puede configurar una línea “she-bang” al principio del script. Para aquellos que no estén familiarizados con este aspecto del comportamiento de Unix, cuando un script se “ejecuta directamente” (por ejemplo, escribiendo “hello.py” en la línea de comandos), Unix examina la primera línea del script y, si lee algo como “#!/usr/bin/env python3”, el sistema operativo supone que es una línea de comandos que debe ejecutarse para ejecutar este script en particular.

Resumen

Obviamente, este es solo el primer artículo de varios sobre Python. Por supuesto, hay algunos temas más para tratar antes de que comprenda Python y sepa cómo usarlo. En la próxima entrega, hablaré sobre las construcciones de control de flujo de Python, que también implicarán abordar el siguiente aspecto más interesante de Python: el espacio en blanco con significado. ¡Que disfrute programando!


Ted Neward es especialista, ponente y mentor de politecnología en Seattle. Ha escrito una gran cantidad de artículos, es autor y coautor de una docena de libros y realiza conferencias por todo el mundo. Puede ponerse en contacto con él en ted@tedneward.com o leer su blog en blogs.tedneward.com.

Gracias al siguiente experto técnico por su ayuda en la revisión de este artículo: Harry Pierson


Comente este artículo en el foro de MSDN Magazine