Python¶

Python es un lenguaje de programación de alto nivel creado a finales de los 80/principios de los 90 por Guido van Rossum, holandés que trabajaba por aquella época en el Centro para las Matemáticas y la Informática de los Países Bajos. Sus instrucciones están muy cercanas al lenguaje natural en inglés y se hace hincapié en la legibilidad del código. Toma su nombre de los Monty Python, grupo humorista de los 60 que gustaban mucho a Guido. Python fue creado como sucesor del lenguaje ABC
. 1
Características del lenguaje¶
A partir de su definición de la Wikipedia:
Python es un lenguaje de programación interpretado y multiplataforma cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.
Añadiría, como característica destacada, que se trata de un lenguaje de propósito general.
Ventajas¶
Libre y gratuito (OpenSource).
Fácil de leer, parecido a pseudocódigo.
Aprendizaje relativamente fácil y rápido: claro, intuitivo….
Alto nivel.
Alta Productividad: simple y rápido.
Tiende a producir un buen código: orden, limpieza, elegancia, flexibilidad, …
Multiplataforma. Portable.
Multiparadigma: programación imperativa, orientada a objetos, funcional, …
Interactivo, modular, dinámico.
Librerías extensivas («pilas incluídas»).
Gran cantidad de librerías de terceros.
Extensible (C++, C, …) y «embebible».
Gran comunidad, amplio soporte.
Interpretado.
Tipado dinámico 5.
Fuertemente tipado 6.
Hay diferentes implementaciones: CPython, PyPy, Jython, IronPython, MicroPython, …
Desventajas¶
Interpretado (velocidad de ejecución, multithread vs GIL, etc.).
Consumo de memoria.
Errores durante la ejecución.
Dos versiones mayores no del todo compatibles (v2 vs v3).
Desarrollo móvil.
Documentación a veces dispersa e incompleta.
Varios módulos para la misma funcionalidad.
Librerías de terceros no siempre del todo maduras.
Uso de Python¶
Al ser un lenguaje de propósito general, podemos encontrar aplicaciones prácticamente en todos los campos científico-tecnológicos:
Análisis de datos.
Aplicaciones de escritorio.
Bases de datos relacionales / NoSQL
Buenas prácticas de programación / Patrones de diseño.
Concurrencia.
Criptomonedas / Blockchain.
Desarrollo de aplicaciones multimedia.
Desarrollo de juegos.
Desarrollo en dispositivos embebidos.
Desarrollo móvil.
Desarrollo web.
DevOps / Administración de sistemas / Scripts de automatización.
Gráficos por ordenador.
Inteligencia artificial.
Internet de las cosas.
Machine Learning.
Programación de parsers / scrapers / crawlers.
Programación de redes.
Propósitos educativos.
Prototipado de software.
Seguridad.
Tests automatizados.
De igual modo son muchas las empresas, instituciones y organismos que utilizan Python en su día a día para mejorar sus sistemas de información. Veamos algunas de las más relevantes:

Grandes empresas y organismos que usan Python¶
Existen ránkings y estudios de mercado que sitúan a Python como uno de los lenguajes más usados y la vez, más amados dentro del mundo del desarrollo de software.
En el momento de la escritura de este documento, la última actualización del Índice TIOBE es de febrero de 2022 en el que Python ocupaba el primer lugar de los lenguajes de programación más usados, por delante de C y Java.

Índice TIOBE 2022¶
Igualmente en la encuesta a desarrolladores de Stack Overflow hecha en 2021, Python ocupaba el tercer puesto de los lenguajes de programación más populares, sólo por detrás de Javascript y HTML/CSS.

Encuesta Stack Overflow 2021¶
Python2 vs Python3¶
En el momento de la escritura de este material, se muestra a continuación la evolución de las versiones mayores de Python a lo largo de la historia: 3
Versión |
Fecha de lanzamiento |
---|---|
Python 1.0 |
Enero 1994 |
Python 1.5 |
Diciembre 1997 |
Python 1.6 |
Septiembre 2000 |
Python 2.0 |
Octubre 2000 |
Python 2.1 |
Abril 2001 |
Python 2.2 |
Diciembre 2001 |
Python 2.3 |
Julio 2003 |
Python 2.4 |
Noviembre 2004 |
Python 2.5 |
Septiembre 2006 |
Python 2.6 |
Octubre 2008 |
Python 2.7 |
Julio 2010 |
Python 3.0 |
Diciembre 2008 |
Python 3.1 |
Junio 2009 |
Python 3.2 |
Febrero 2011 |
Python 3.3 |
Septiembre 2012 |
Python 3.4 |
Marzo 2014 |
Python 3.5 |
Septiembre 2015 |
Python 3.6 |
Diciembre 2016 |
Python 3.7 |
Junio 2018 |
Python 3.8 |
Octubre 2019 |
Python 3.9 |
Octubre 2020 |
Python 3.10 |
Octubre 2021 |
El cambio de Python 2 a Python 3 fue bastante «traumático» ya que se perdió la compatibilidad en muchas de las estructuras del lenguaje. Los «core-developers» 4, con Guido van Rossum a la cabeza, vieron la necesidad de aplicar estas modificaciones en beneficio del rendimiento y expresividad del lenguaje de programación. Este cambio implicaba que el código escrito en Python 2 no funcionaría (de manera inmediata) en Python 3.
El pasado 1 de enero de 2020 finalizó oficialmente el soporte a la versión 2.7 del lenguaje de programación Python. Es por ello que se recomienda lo siguiente:
Si aún desarrollas aplicaciones escritas en Python 2, deberías migrar a Python 3.
Si vas a desarrollar una nueva aplicación, deberías hacerlo directamente en Python 3.
Importante
Únete a Python 3 y aprovecha todas sus ventajas.
Zen de Python¶
Existen una serie de reglas «filosóficas» que indican una manera de hacer y de pensar dentro del mundo pitónico 2 creadas por Tim Peters, llamadas el Zen de Python y que se pueden aplicar incluso más allá de la programación:
>>> 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!
En su traducción de la Wikipedia:
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!
- 1
Foto original por Markéta Marcellová en Unsplash.
- 2
Dícese de algo/alguien que sigue las convenciones de Python.
- 3
Fuente: python.org.
- 4
Término que se refiere a los/las desarrolladores/as principales del lenguaje de programación.
- 5
Tipado dinámico significa que una variable puede cambiar de tipo durante el tiempo de vida de un programa. C es un lenguaje de tipado estático.
- 6
Fuertemente tipado significa que, de manera nativa, no podemos operar con dos variables de tipos distintos, a menos que realice una conversión explícita. Javascript es un lenguaje débilmente tipado.