El lenguaje de programación Python, que data de 1991, se consideraba un relleno de brechas, una forma de escribir scripts que » automatizan las cosas aburridas » (como lo expresó un libro popular sobre el aprendizaje de Python) o para crear rápidamente prototipos de aplicaciones que se implementarán en otros lenguajes.
Sin embargo, en los últimos años, Python se ha convertido en un lenguaje de primera clase en el desarrollo de software moderno, la gestión de infraestructura y el análisis de datos. Ya no es un lenguaje de utilidad de trastienda, sino una fuerza importante en la creación de aplicaciones web y la gestión de sistemas, y un impulsor clave de la explosión en el análisis de big data y la inteligencia de las máquinas.
Ventajas clave de Python
El éxito de Python gira en torno a varias ventajas que ofrece tanto a los principiantes como a los expertos.
Python es fácil de aprender y usar
El número de funciones en el lenguaje en sí es modesto y requiere relativamente poca inversión de tiempo o esfuerzo para producir sus primeros programas. La sintaxis de Python está diseñada para ser legible y sencilla. Esta simplicidad convierte a Python en un lenguaje de enseñanza ideal y permite que los recién llegados lo aprendan rápidamente.
Como resultado, los desarrolladores pasan más tiempo pensando en el problema que están tratando de resolver y menos tiempo pensando en las complejidades del lenguaje o descifrando el código dejado por otros.
Python es ampliamente adoptado y soportado
Este lenguaje es popular y ampliamente utilizado, como lo atestiguan las altas clasificaciones en encuestas como el índice Tiobe y la gran cantidad de proyectos de GitHub que utilizan Python. Python se ejecuta en todos los sistemas operativos y plataformas principales, y también en la mayoría de los menores. Muchas bibliotecas importantes y servicios impulsados por API tienen enlaces o envoltorios de Python, lo que permite que Python interactúe libremente con esos servicios o use directamente esas bibliotecas.
Python no es un lenguaje de «juguete»
A pesar de que las secuencias de comandos y la automatización cubren una gran parte de los casos de uso de Python (más sobre esto más adelante), Python también se utiliza para crear software de calidad profesional, tanto como aplicaciones independientes como servicios web. Puede que Python no sea el lenguaje más rápido, pero lo que le falta en velocidad lo compensa con versatilidad.
Python sigue avanzando
Cada revisión del lenguaje Python agrega nuevas funciones útiles para mantenerse al día con las prácticas modernas de desarrollo de software. Las operaciones asincrónicas y las corrutinas, por ejemplo, ahora son partes estándar del lenguaje, lo que facilita la escritura de aplicaciones Python que realizan un procesamiento simultáneo.
Para que se utiliza Python
El caso de uso más básico de Python es como lenguaje de automatización y secuencias de comandos. Python no es solo un reemplazo de scripts de shell o archivos por lotes. También se utiliza para automatizar interacciones con navegadores web o GUI de aplicaciones o para realizar el aprovisionamiento y la configuración del sistema en herramientas como Ansible y Salt. Pero las secuencias de comandos y la automatización representan solo la punta del iceberg con Python.
Programación de aplicaciones con Python
Puede crear aplicaciones GUI de línea de comandos y multiplataforma con Python e implementarlas como ejecutables independientes. Python no tiene la capacidad nativa para generar un binario independiente a partir de un script, pero se pueden usar paquetes de terceros como cx_Freeze y PyInstaller para lograrlo.
Ciencia de datos y aprendizaje automático con Python
El análisis de datos sofisticado se ha convertido en una de las áreas de TI de más rápido movimiento y uno de los casos de uso estrella de Python. La gran mayoría de las bibliotecas utilizadas para la ciencia de datos o el aprendizaje automático tienen interfaces Python, lo que hace que el lenguaje sea la interfaz de comando de alto nivel más popular para las bibliotecas de aprendizaje automático y otros algoritmos numéricos.
Servicios web y API RESTFUL en Python
Las bibliotecas nativas de Python y los marcos web de terceros proporcionan formas rápidas y convenientes de crear todo, desde simples API REST en unas pocas líneas de código hasta sitios completos basados en datos. Las últimas versiones de Python tienen un fuerte soporte para operaciones asincrónicas, lo que permite que los sitios manejen decenas de miles de solicitudes por segundo con las bibliotecas adecuadas.
Metaprogramación y generación de código en Python
En Python, todo en el lenguaje es un objeto, incluidos los propios módulos y bibliotecas de Python. Esto permite que Python funcione como un generador de código altamente eficiente, lo que hace posible escribir aplicaciones que manipulen sus propias funciones y tengan el tipo de extensibilidad que sería difícil o imposible de lograr en otros lenguajes.
Python también se puede usar para impulsar sistemas de generación de código, como LLVM, para crear código de manera eficiente en otros lenguajes.
«Código de pegamento» en Python
Python se describe a menudo como un «lenguaje adhesivo», lo que significa que puede permitir la interoperabilidad de códigos dispares (normalmente bibliotecas con interfaces de lenguaje C). Su uso en ciencia de datos y aprendizaje automático está en esta línea, pero esa es solo una encarnación de la idea general. Si tiene aplicaciones o dominios de programa que le gustaría conectar, pero no pueden comunicarse entre sí directamente, puede usar Python para conectarlos.
Donde Python se queda corto
También vale la pena señalar el tipo de tareas para las que Python no es adecuado. Python es un lenguaje de alto nivel, por lo que no es adecuado para la programación a nivel de sistema; los controladores de dispositivos o los núcleos del sistema operativo están fuera de escena.
Tampoco es ideal para situaciones que requieren binarios independientes multiplataforma. Puede crear una aplicación Python independiente para Windows, MacOS y Linux, pero no de forma elegante o sencilla. Finalmente, Python no es la mejor opción cuando la velocidad es una prioridad absoluta en todos los aspectos de la aplicación. Para eso, está mejor con C / C ++ u otro lenguaje de ese calibre.
¿Cómo simplifica Python la programación?
La sintaxis de Python está destinada a ser legible y limpia, sin pretensiones. Un «hola mundo» estándar en Python 3.x no es más que:
print (" ¡Hola mundo !")
Python proporciona muchos elementos sintácticos para expresar de manera concisa muchos flujos de programa comunes. Considere un programa de muestra para leer líneas de un archivo de texto en un objeto de lista, eliminando cada línea de su carácter de nueva línea final a lo largo del camino:
on open (' myfile . txt ') como my_file : file_lines = [ x . rstrip (' \ n ') para x en mi_archivo ]
La with/as
construcción es un administrador de contexto, que proporciona una forma eficiente de instanciar un objeto para un bloque de código y luego desecharlo fuera de ese bloque. En este caso, el objeto se my_file
instancia con la open()
función. Esto toma el lugar de varias líneas de texto estándar para abrir el archivo, leer líneas individuales de él y luego cerrarlo.
La [x … for x in my_file]
construcción es otra idiosincrasia de Python, la lista de comprensión. Permite que un elemento que contiene otros elementos (aquí, my_file
y las líneas que contiene) se repita, y permite que cada elemento iterado (es decir, cada uno x
) se procese y se agregue automáticamente a una lista.
Usted podría escribir una cosa tal como un oficial for…
de bucle en Python, tanto como lo haría en otro idioma. El punto es que Python tiene una forma de expresar económicamente cosas como bucles que iteran sobre múltiples objetos y realizan una operación simple en cada elemento en el bucle, o para trabajar con cosas que requieren instanciación y eliminación explícitas.
Construcciones como esta permiten a los desarrolladores de Python equilibrar la concisión y la legibilidad.
Las otras características del lenguaje de Python están destinadas a complementar los casos de uso comunes. La mayoría de los tipos de objetos modernos (cadenas Unicode, por ejemplo) se integran directamente en el lenguaje. Las estructuras de datos, como listas, diccionarios (es decir, mapas hash o almacenes de valores clave), tuplas (para almacenar colecciones inmutables de objetos) y conjuntos (para almacenar colecciones de objetos únicos), están disponibles como elementos estándar.
Python 2 frente a Python 3
Este leguaje está disponible en dos versiones, que son lo suficientemente diferentes como para hacer tropezar a muchos usuarios nuevos. Python 2.x, la rama «heredada» más antigua, seguirá siendo compatible (es decir, recibirá actualizaciones oficiales) hasta 2020, y podría persistir de manera no oficial después de eso.
La versión 3.x, la encarnación actual y futura del lenguaje, tiene muchas características útiles e importantes que no se encuentran en Python 2.x, como nuevas características de sintaxis (por ejemplo, el » operador de morsa «), mejores controles de concurrencia y más intérprete eficiente.
La adopción de Python 3 se ralentizó durante más tiempo debido a la relativa falta de compatibilidad con bibliotecas de terceros. Muchas bibliotecas de Python solo admitían Python 2, lo que dificulta el cambio. Pero en los últimos años, la cantidad de bibliotecas que solo admiten Python 2 ha disminuido.
Todas las bibliotecas más populares ahora son compatibles con Python 2 y Python 3. Hoy, Python 3 es la mejor opción para nuevos proyectos; no hay razón para elegir Python 2 a menos que no tenga otra opción. Si está atascado con Python 2, tiene varias estrategias a su disposición.
Las Bibliotecas de Python
El éxito de Python se basa en un rico ecosistema de software propio y de terceros. Python se beneficia tanto de una sólida biblioteca estándar como de una generosa variedad de bibliotecas de terceros que se obtienen y se usan fácilmente. Python se ha enriquecido con décadas de expansión y contribución.
La biblioteca estándar de Python proporciona módulos para tareas de programación comunes: matemáticas, manejo de cadenas, acceso a archivos y directorios, redes, operaciones asincrónicas, subprocesos, administración de multiprocesos, etc.
Pero también incluye módulos que administran tareas de programación comunes de alto nivel que necesitan las aplicaciones modernas: leer y escribir formatos de archivo estructurados como JSON y XML, manipular archivos comprimidos, trabajar con protocolos de Internet y formatos de datos (páginas web, URL, correo electrónico). Se puede acceder a la mayoría de los códigos externos que exponen una interfaz de función externa compatible con C con el ctypes
módulo de Python .
La distribución predeterminada de Python también proporciona una biblioteca GUI multiplataforma rudimentaria pero útil a través de Tkinter y una copia incrustada de la base de datos SQLite 3.
Las miles de bibliotecas de terceros, disponibles a través del índice de paquetes de Python ( PyPI ), constituyen el escaparate más sólido de la popularidad y versatilidad de Python.
Por ejemplo:
- La biblioteca BeautifulSoup proporciona una caja de herramientas todo en uno para extraer HTML (incluso HTML complicado y defectuoso) y extraer datos de él.
- Requests hace que trabajar con solicitudes HTTP a escala sea sencillo y sin complicaciones.
- Los marcos como Flask y Django permiten el desarrollo rápido de servicios web que abarcan casos de uso tanto simples como avanzados.
- Se pueden administrar múltiples servicios en la nube a través del modelo de objetos de Python usando Apache Libcloud.
- NumPy, Pandas y Matplotlib aceleran las operaciones matemáticas y estadísticas y facilitan la creación de visualizaciones de datos.
Compromisos de Python
Al igual que C #, Java y Go, Python tiene una gestión de memoria recolectada de basura, lo que significa que el programador no tiene que implementar código para rastrear y liberar objetos. Normalmente, la recolección de elementos no utilizados ocurre automáticamente en segundo plano, pero si eso plantea un problema de rendimiento, puede activarlo manualmente o deshabilitarlo por completo, o declarar regiones enteras de objetos exentos de la recolección de elementos no utilizados como una mejora del rendimiento.
Un aspecto importante de Python es su dinamismo. Todo en el lenguaje, incluidas las funciones y los propios módulos, se maneja como objetos. Esto se produce a expensas de la velocidad (más sobre esto más adelante), pero hace que sea mucho más fácil escribir código de alto nivel. Los desarrolladores pueden realizar manipulaciones complejas de objetos con solo unas pocas instrucciones e incluso tratar partes de una aplicación como abstracciones que pueden modificarse si es necesario.
El uso de Python de espacios en blanco significativos se ha citado como uno de los mejores y peores atributos de Python. La sangría en la segunda línea a continuación no es solo para facilitar la lectura; es parte de la sintaxis de Python. Los intérpretes de Python rechazarán los programas que no utilicen la sangría adecuada para indicar el flujo de control.
con open (' myfile . txt ') como my_file : file_lines = [ x . rstrip (' \ n ') para x en mi_archivo ]
Los espacios en blanco sintácticos pueden hacer que las narices se arruguen, y algunas personas rechazan Python por esta razón. Pero las reglas de sangría estrictas son mucho menos molestas en la práctica de lo que podrían parecer en teoría, incluso con los editores de código más mínimos, y el resultado es un código más limpio y legible.
Otro desvío potencial, especialmente para aquellos que provienen de lenguajes como C o Java, es cómo Python maneja la escritura de variables. De forma predeterminada, Python usa la escritura dinámica o «pato», excelente para la codificación rápida, pero potencialmente problemática en bases de código grandes. Dicho esto, Python ha agregado recientemente soporte para sugerencias de tipo en tiempo de compilación opcionales , por lo que los proyectos que podrían beneficiarse de la escritura estática pueden usarlo.
¿Python es lento? No necesariamente
Una advertencia común sobre Python es que es lento. Objetivamente, es verdad. Los programas de Python generalmente se ejecutan mucho más lentamente que los programas correspondientes en C / C ++ o Java. Algunos programas de Python serán más lentos en un orden de magnitud o más.