Cómo empezar con Python



Introducción

La razón por la que he decidido escribir esta entrada es que todo el contenido y la web en sí de Recursos Python requieren un previo conocimiento por parte del lector. Como mínimo, debe saberse qué es Python. Si bien la página principal lleva su definición, es difícil sintetizar al lenguaje en 50 palabras. No solo eso, sino que también asume que has instalado el intérprete (incluso en este instante, puedes no saber qué es el intérprete), tienes dominio sobre la consola interactiva, y más. Dicho esto, el artículo tiene como finalidad explicar cada uno de los términos y aclarar aquellas dudas básicas que han surgido y, además, fortalecer el conocimiento de las bases de Python para aquellos que ya se encuentren sumergidos en su espectro.

Requerimientos mínimos

Si has entrado a Recursos Python, seguramente debes saber qué es un lenguaje de programación, a menos que hayas decidido introducirte en el desarrollo de software y ésta es la primera web que visitas. Suponiendo que es último el caso, es necesario aclarar este término:

Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras.

Es decir, a través de un conjunto de instrucciones con determinada sintaxis (llamado código) podemos crear un programa que realice una o varias operaciones.

Un lenguaje de programación es un código que se utiliza para comunicarse con una computadora (más bien para indicarle qué hacer o que te brinde algo de información), ya sea un celular, una PC o cualquier dispositivo programable. Siempre existieron, existen y existirán muchos lenguajes de programación porque no hay uno que satisfaga todas las necesidades. Cada uno de estos tiene sus cualidades, se destaca mejor en un área específica, por ejemplo, el desarrollo web o de aplicaciones de escritorio.

Windows, Linux, Facebook, Twitter, Google, Android, iOS, Chrome, Firefox, todos están desarrollados en uno o varios lenguajes de programación. Incluso la misma web de Recursos Python, estás leyendo este artículo gracias a WordPress, una plataforma web orientada al desarrollo de blogs, programada en el lenguaje PHP.

Cualquier código (es decir, el conujunto de instrucciones) escrito en un determinado lenguaje de programación no es directamente interpretado por una computadora, sino que existe un traductor que se encarga de transformarlo en un lenguaje entendible para el dispositivo programable pero no para humanos. En lenguajes compilados, se denomina compilador. En los interpretados, se denomina intérprete (término que detallaré más adelante).

Python es un lenguaje de programación interpretado con diversas características, y una de ellas es que resulta fácil de aprender y desarrollar, por lo que es ideal para aquellos que se inician en el mundo de la programación.

El lenguaje

Aparece en 1991. Su nombre proviene del grupo de humoristas británicos “Monty Python” que, al parecer, eran del agrado de Guido van Rossum, creador de Python.

Características principales
  • De fácil aprendizaje.
  • Interpretado.
  • Multiparadigma: soporta más de un estilo de programación, por ejemplo, orientada a objetos o funcional, aunque puede observarse un predominio de la primera.
  • Utiliza tipado dinámico: el mismo lenguaje se encarga de establecer el tipo de una variable en base al valor que el programador le asigna y, a su vez, dicha variable puede luego contener un valor de otro tipo.
  • Multiplataforma. Corre en los principales sitemas: Microsoft Windows, Linux, OS X, y más.
  • De código abierto y administrado por una organización sin fines de lucro: Python Software Foundation.

No es necesario comprenderlas todas al comenzar, sino que ellas mismas se irán presentando ante el programador a medida que se experimenta y desarrolla con el lenguaje.

Puede utilizarse tanto para el desarrollo de aplicaciones de escritorio como web, utilizando diversas liberías y frameworks.

Un proyecto colaborativo

Python es un proyecto de código abierto el cual reúne a muchas personas en todo el globo. No únicamente programadores, sino también diseñadores gráficos, traductores, desarrolladores de documentación, entre otros. Además, no es necesario tener grandes conocimientos, puedes contribuir reportando errores tanto en el código como en la documentación.

Su desarrollo está respaldado por una fundación sin ánimo de lucro (Python Software Foundation) que garantiza la prosperidad del proyecto.

El arduo trabajo en colaboración ha dado como resultado una comunidad mundial que aumenta día a día. Todos los años se realizan varias conferencias y reuniones de entusiastas llamadas PyCon, que se llevan a cabo en diversos lugares del mundo.

El intérprete

Como se dijo anteriormente, se trata de un lenguaje interpretado. Por lo tanto, no puedo pasar en alto la existencia de un intérprete. Sin más ni menos, el intérprete es el encargado de ejecutar cada línea de código de un programa de Python.

En los lenguajes compilados, el compilador traduce el código de fuente a un lenguaje que es interpretado por el sistema operativo. Sin embargo, no todos las plataformas corren un programa de la misma manera, razón por la cual existen compiladores específicos para cada una de ellas (GCC en Linux, MinGW y Visual C Compiler en Windows, entre otros).

El ser un lenguaje interpretado establece un gran porcentaje de las cualidades de Python. Por ejemplo, le permite ser multiplataforma, ejecutar el mismo código de fuente en múltiples sistemas sin realizar cambio alguno (en la mayoría de los casos). También, le otorga la posibilidad de que el mismo lenguaje se encargue de examinar el valor de una variable y determinar su tipo, lo que le brinda una mayor flexibilidad (tipado dinámico).

En detalle

El intérprete no es más que un programa escrito en C. A su vez, éste tiene varias etapas desde que lee un archivo de extensión .py hasta que lo ejecuta.

  1. Python divide el código de fuente en porciones más pequeñas, según su conveniencia para analizarlas por separado más rápidamente.
  2. El flujo del programa (cada una de dichas porciones) es representado en un árbol de sintaxis (AST).
  3. Un compilador interno traduce la representación en AST a bytecode.
  4. Por último, el bytecode generado anteriormente es ejecutado por la máquina virtual de Python (Python Virtual Machine o Python VM).

Siempre que se ejecuta un script (cualquier archivo .py) y los módulos que éste puede llegar a importar, Python compila el código de fuente y lo almacena en un archivo del mismo nombre con extensión .pyc (dentro de una carpeta llamada __pycache__ en Python 3). De esta manera, si el fichero no ha sufrido modificaciones, en la próxima ejecución se evitarán el paso 2 y 3, por lo que la inicialización será más rápida.

No es el único

Hasta ahora he dejado en claro que cualquier código de fuente en un archivo .py es manejado por el intérprete, quien se encarga de compilarlo (transformarlo en bytecode) y ejecutarlo (a través de la máquina virtual). Dicho intérprete lleva el nombre de CPython y está escrito en C. Es aquí donde generalmente se presta a confusión. Python es el nombre del lenguaje, mientras que CPython es el nombre del intérprete.

A lo largo de los años, se han desarrollado proyectos en los que se modifica el intérprete o se lo reescribe por completo, y se los llama implementación de Python o simplemente implementación. Alguna de ellas son:

  • Stackless – Permite al programador el uso de mútliples hilos dejando de lado las complicaciones que presenta CPython.
  • IronPython – Incluye las capacidades de .NET y acceso a todas sus funciones en Python.
  • PyPy – Un intérprete más rápido escrito en Python (sí, aunque requiero de otro artículo para contarte el truco).
  • Jython – Un intérprete escrito en Java.

Generalmente, cuando en la comunidad se habla de Python, sin especificar la implementación, se refiere a la oficial y original: CPython.

Instalación

Es momento de pasar de la teoría a la práctica. Para que todo lo comentado anteriormente sea posible, es necesario instalar Python (cualquiera de sus implementaciones) en nuestro ordenador. Para comenzar, te recomiendo utilizar CPython, el cual puedes descargar desde el sitio oficial.

En sistemas basados en Linux y algunas versiones de Mac OS, de seguro hay un intérprete de Python instalado, ya que es utilizado por varias herramientas de dichas plataformas. Para corroborarlo, deberás ver un mensaje como el siguiente al abrir la terminal (línea de comandos o consola) y escribir python.

Python X.Y (default, Nov 10 2013, 19:24:18) ...
Type "help", "copyright", "credits" or "license" for more information.
>>>

X.Y representa el número de versión.

En Windows, puedes utilizar esta guía de instalación para Python 3 y Windows 8 que resulta similar para otras versiones.

Aplicaciones web y de escritorio

Python es un lenguaje multipropósito, puede emplearse para infinidad de proyectos (véase las historias de éxito con el lenguaje).

Las aplicaciones web y de escritorio son dos grandes campos en los que el uso de Python se destaca, incluso sin utilizar paquetes de terceros, sino a partir de la vasta colección de herramientas que provee la librería estándar.

Por ejemplo, Tkinter es un paquete incluído por defecto para la creación de interfaces de usuario. Se caracteriza por su simpleza y es generalmente utilizado para prototipos rápidos.

Vista previa

A su vez existen librerías más complejas que se han portado desde otros lenguajes; por ejemplo, PyGTK, PyQt y wxPython.

Vista previa

Dentro de la rama del desarrollo web, se destacan el uso de CGI y WSGI. Este último es mucho más moderno que el primero (que se trató de uno de los primeros métodos para generar webs dinámicas), además de ser más eficiente. Existen infinidad de frameworks webs para Python, algunos de los más populares son Django, Pyramid, web2py y Flask. El desarrollo vía CGI puede implementarse sin necesidad de utilizar herramientas de terceros (véase Introducción a CGI).

Python 2 vs. Python 3

A medida que se avanza con el artículo intento ir de a poco hacia el lenguaje en sí, en el cual espero que ya estemos sumergidos para el final.

Generalmente al comenzar con Python surge la duda de qué versión utilizar. Tal como lo indica la página oficial, Python 2 es un legado, que se mantiene en pie únicamente para continuar soportando a la infinidad de aplicaciones, sistemas y librerías que aún lo utilizan. En cambio, Python 3 es el futuro del lenguaje, con su desarrollo se han solucionado gran cantidad de errores y aumentado la eficiencia. Para esto se han tenido que dejar atras ciertas características, como sintaxis, módulos y funciones. Por lo tanto, a medida que aumenta la cantidad de código en un determinado proyecto, también lo hace de manera proporcional las incompatibilidades con otras versiones.

Existen herramientas para portar código de Python 2 a 3 y vice-versa, con ciertas limitaciones. Los grandes proyectos ya soportan Python 3 o están en camino para hacerlo. Por ejemplo, Django (el web framework más popular) ya ha indicado que a partir de su versión 1.5 Python 3 está completamente soportado. De la misma manera, versiones más antiguas como la 2.5 o 2.6 van quedando obsoletas, por lo que su soporte se descarta. Por otro lado, Twisted (un framework de red orientado a eventos) aún está en el proceso de portación de código.

La wiki de Python ha escrito un artículo en el que se detalla la problemática Python 2 – Python 3, titulado “Python2orPython3”.

En resumen, si lo que planteas desarollar puedes llevarlo a cabo con Python 3, ve directo a ello. Si te ves limitado por las herramientas que planeas utilizar, ya que éstas únicamente soportan la gama 2.x, ve con Python 2.

Para comenzar, recomiendo la versión 2.7.6, que es y será la última de la serie, ya que la mayoría de guías y libros de programación se basan en esta versión. De todas maneras, puedes tener múltiples versiones del lenguaje en un mismo sistema.

Librería estándar

La librería estándar es un conjunto de módulos y paquetes que plantean soluciones a problemas comunes, además de infinidad de funcionalidades. Por ejemplo, entrada y salida de archivos, interacción con URLs, funciones matemáticas, manejo de la consola, hilos, procesos, expresiones regulares, emails, sockets, y más. Es desarrollada por la comunidad de programadores y se actualiza constantemente.

Gracias a la comunidad y al constante trabajo de aquellos involucrados en el proyecto Python, cada funcionalidad está detallada y documentada en la página oficial. Además, contiene diversas guías y preguntas frecuentes, que les será de mucha utilidad a aquellos que no se vean limitados por el idioma.

IDLE y la consola interactiva

La instalación de Python incluye IDLE (Integrated DeveLopment Environment), un pequeño entorno de desarrollo escrito en el mismo lenguaje utilizando Tkinter que resulta muy práctico para realizar los primeros scripts en el proceso de aprendizaje. Incluye resaltado de sintaxis y las operaciones comúnes de un IDE.

Vista previa

La consola interactiva de Python permite ejecutar código sobre la marcha. Es decir, se escribe una determinada operación y al presionar Enter se ejecuta y se muestra el resultado. Además de ser perfecta para utilizarse como una calculadora, también resulta así para comprobar la eficacia de pequeños códigos, la correcta instalación de un módulo, entre otras. Se accede a ella escribiendo python en la terminal o línea de comandos. En Windows, también es posible ejecutarla desde el acceso directo creado durante la instalación, generalmente llamado “Python (command line)”.

Vista previa

Código y archivos

Hemos visto cómo ejecutar código Python directamente en la consola para prototipos rápidos. Ahora es momento de utilizar la forma convencional.

Los archivos de código de fuente de Python generalmente finalizan con la extensión .py. Al momento de ser ejecutados (ver en el próximo apartado), el intérprete se encarga de automáticamente generar un archivo con la extensión .pyc en el mismo directorio, en donde se encuentra almacenado el bytecode del que se habló anteriormente. Python 3 es un poco más ordenado, y decide crear una carpeta llamada __pycache__ para esto.

Además, existen otras extensiones menos convencionales, pero no está de más aclararlas. Los archivos .pyo contienen bytecode optimizado, una opción que provee el intérprete para mejorar el rendimiento de una fuente. Ficheros .pyd son similares a una DLL de Windows, aunque pueden ser importados directamente como un módulo de Python.

Por último, una pequeña aclaración acerca de las siguientes dos líneas, situadas al comienzo de la mayoría de los ficheros .py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

La primera se denomina Shebang y se trata de un término propio de Unix. Ésta se encarga de indicarle al sistema operativo cómo ejecutar el mismo archivo. En otros sistemas, como Windows, no tiene ningún tipo de funcionalidad; sin embargo, recomiendo siempre colocarla simplemente por portabilidad y consistencia.

La segunda, indica la codificación de caracteres del archivo. UTF-8 es la más común.

Ejecución

Para ejecutar un archivo de código de fuente escribe en la línea de comandos:

python archivo.py

En la mayoría de los sistemas los ficheros finalizados en .py ya están asociados con el intérprete, por lo que al hacer doble click sobre ellos correrán automáticamente.

¿Qué sigue?

Has llegado al final del artículo, pero esto no termina aquí. He intentado explicar lo más claramente posible aquellos detalles que los libros sobre el lenguaje pueden llegar a pasar por alto, como también los términos empleados en la web.

Si tus conocimientos hasta el momento eran nulos, reconozco que es demasiada información con términos y definiciones algo complejas. No debes preocuparte por ello, sino simplemente tenerlos en cuenta para el momento en el que se te presenten mientras experimentas con el lenguaje.

El siguiente paso es aprender sobre el lenguaje: su sintaxis, funciones, clases, paradigmas, librerías y más. Es posible que un futuro exista el libro de programación de Python de la web, pero hasta el momento deberás abastecerte de los existentes, que son excelentes. Python para todos es un libro gratuito de muy buena calidad que recomiendo para iniciarte en el lenguaje.

Para usuarios de Windows, que probablemente sean muchos, no olviden visitar las preguntas frecuentes de Python en Windows.



Deja un comentario