Pitón (lenguaje de programación)

Ajustar Compartir Imprimir Citar
Lenguaje de programación para fines generales

Python es un lenguaje de programación de propósito general y alto nivel. Su filosofía de diseño enfatiza la legibilidad del código con el uso de sangría significativa.

Python se tipifica dinámicamente y se recolecta basura. Admite múltiples paradigmas de programación, incluida la programación estructurada (particularmente procedimental), orientada a objetos y funcional. A menudo se describe como "baterías incluidas" idioma debido a su completa biblioteca estándar.

Guido van Rossum comenzó a trabajar en Python a fines de la década de 1980 como sucesor del lenguaje de programación ABC y lo lanzó por primera vez en 1991 como Python 0.9.0. Python 2.0 se lanzó en 2000 e introdujo nuevas funciones, como la comprensión de listas, la recolección de elementos no utilizados con detección de ciclos, el recuento de referencias y la compatibilidad con Unicode. Python 3.0, lanzado en 2008, fue una revisión importante que no era completamente compatible con versiones anteriores. Python 2.7.18, lanzado en 2020, fue el último lanzamiento de Python 2.

Python se clasifica constantemente como uno de los lenguajes de programación más populares.

Historia

El diseñador de Python, Guido van Rossum, en OSCON 2006

Python fue concebido a fines de la década de 1980 por Guido van Rossum en Centrum Wiskunde & Informatica (CWI) en los Países Bajos como sucesor del lenguaje de programación ABC, inspirado en SETL, capaz de manejar excepciones (desde el principio más nuevas capacidades en Python 3.11) e interactuar con el sistema operativo Amoeba. Su implementación comenzó en diciembre de 1989. Van Rossum asumió la responsabilidad exclusiva del proyecto, como desarrollador principal, hasta el 12 de julio de 2018, cuando anunció sus "vacaciones permanentes" de sus responsabilidades como 'dictador benévolo de por vida' de Python, un título que la comunidad de Python le otorgó para reflejar su compromiso a largo plazo como principal responsable de la toma de decisiones del proyecto. En enero de 2019, los desarrolladores principales activos de Python eligieron un consejo directivo de cinco miembros para dirigir el proyecto.

Python 2.0 se lanzó el 16 de octubre de 2000 e incluye muchas características nuevas importantes. Python 3.0, lanzado el 3 de diciembre de 2008, con muchas de sus funciones principales adaptadas a Python 2.6.x y 2.7.x. Las versiones de Python 3 incluyen la utilidad 2to3, que automatiza la traducción del código de Python 2 a Python 3.

El final de la vida útil de Python 2.7 se fijó inicialmente para 2015, luego se pospuso hasta 2020 debido a la preocupación de que una gran cantidad de código existente no pudiera transferirse fácilmente a Python 3. No hay más parches de seguridad u otras mejoras serán lanzadas para ello. Actualmente solo se admiten 3.7 y versiones posteriores. En 2021, Python 3.9.2 y 3.8.8 se agilizaron porque todas las versiones de Python (incluida la 2.7) tenían problemas de seguridad que provocaban una posible ejecución remota de código y envenenamiento de caché web.

En 2022, Python 3.10.4 y 3.9.12 se aceleraron y 3.8.13 y 3.7.13 debido a muchos problemas de seguridad. Cuando se lanzó Python 3.9.13 en mayo de 2022, se anunció que la serie 3.9 (que se une a las series anteriores 3.8 y 3.7) solo recibirá correcciones de seguridad en el futuro. El 7 de septiembre de 2022, se realizaron cuatro nuevos lanzamientos debido a un posible ataque de denegación de servicio: 3.10.7, 3.9.14, 3.8.14 y 3.7.14.

Desde noviembre de 2022, Python 3.11.0 es la versión estable actual y, entre los cambios notables con respecto a la versión 3.10, se encuentra que es entre un 10 % y un 60 % más rápido y que mejora significativamente el informe de errores.

Python 3.12 (alfa 2) ha mejorado los mensajes de error.

Eliminaciones de Python

El módulo obsoleto smtpd se eliminó de Python 3.12 (alfa). Y se han eliminado una serie de otras funciones antiguas, rotas y obsoletas (por ejemplo, del módulo unittest), clases y métodos. Se eliminaron los miembros de longitud obsoletos wstr y wstr_ de la implementación C de objetos Unicode, para hacer que UTF-8 sea el valor predeterminado en versiones posteriores de Python.

Históricamente, Python 3 también hizo cambios con respecto a Python 2, p. cambió el operador de división.

Filosofía de diseño y características

Python es un lenguaje de programación multiparadigma. La programación orientada a objetos y la programación estructurada son totalmente compatibles, y muchas de sus funciones admiten la programación funcional y la programación orientada a aspectos (incluida la metaprogramación y los metaobjetos). Muchos otros paradigmas son compatibles a través de extensiones, incluido el diseño por contrato y la programación lógica.

Python usa escritura dinámica y una combinación de conteo de referencias y un recolector de basura de detección de ciclos para la administración de la memoria. Utiliza resolución dinámica de nombres (enlace tardío), que enlaza métodos y nombres de variables durante la ejecución del programa.

Su diseño ofrece cierto soporte para programación funcional en la tradición Lisp. Tiene funciones filter, map y reduce; listas de comprensiones, diccionarios, conjuntos y expresiones generadoras. La biblioteca estándar tiene dos módulos (itertools y functools) que implementan herramientas funcionales prestadas de Haskell y Standard ML.

Su filosofía central se resume en el documento El Zen de Python (PEP 20), que incluye aforismos como:

En lugar de incorporar toda su funcionalidad en su núcleo, Python fue diseñado para ser altamente extensible a través de módulos. Esta modularidad compacta lo ha hecho particularmente popular como medio para agregar interfaces programables a las aplicaciones existentes. La visión de Van Rossum de un lenguaje central pequeño con una gran biblioteca estándar y un intérprete fácilmente extensible surgió de sus frustraciones con ABC, que defendía el enfoque opuesto.

Python se esfuerza por lograr una sintaxis y una gramática más simples y menos abarrotadas, al mismo tiempo que brinda a los desarrolladores una opción en su metodología de codificación. A diferencia de Perl 'hay más de una forma de hacerlo' lema, Python adopta un "debería haber una, y preferiblemente solo una, forma obvia de hacerlo" filosofía. Alex Martelli, miembro de la Python Software Foundation y autor del libro Python, escribió: "Para describir algo como 'inteligente' no se considera un cumplido en la cultura de Python."

Los desarrolladores de Python se esfuerzan por evitar la optimización prematura y rechazar parches en partes no críticas de la implementación de referencia de CPython que ofrecería aumentos marginales en la velocidad a costa de la claridad. Cuando la velocidad es importante, un programador de Python puede mover funciones de tiempo crítico a módulos de extensión escritos en lenguajes como C; o use PyPy, un compilador justo a tiempo. Cython también está disponible, lo que traduce una secuencia de comandos de Python a C y realiza llamadas API de nivel C directas al intérprete de Python.

Los desarrolladores de Python buscan que sea divertido de usar. Esto se refleja en su nombre, un tributo al grupo de comedia británico Monty Python, y en ocasiones en los enfoques lúdicos de los tutoriales y materiales de referencia, como el uso de los términos "spam" y "huevos& #34; (una referencia a un boceto de Monty Python) en los ejemplos, en lugar de "foo" y "bar".

Un neologismo común en la comunidad de Python es pythonic, que tiene una amplia gama de significados relacionados con el estilo del programa. "Pitónica" el código puede usar bien los modismos de Python, ser natural o mostrar fluidez en el lenguaje, o ajustarse a la filosofía minimalista de Python y al énfasis en la legibilidad. El código que es difícil de entender o se lee como una transcripción aproximada de otro lenguaje de programación se llama no pitónico.

Los usuarios y admiradores de Python, especialmente aquellos que se consideran conocedores o experimentados, a menudo se denominan Pythonistas.

Sintaxis y semántica

Python está destinado a ser un lenguaje de fácil lectura. Su formato es visualmente ordenado y, a menudo, utiliza palabras clave en inglés donde otros idiomas usan puntuación. A diferencia de muchos otros lenguajes, no usa corchetes para delimitar bloques, y se permiten puntos y comas después de las declaraciones, pero rara vez se usan. Tiene menos excepciones sintácticas y casos especiales que C o Pascal.

Sangría

Python usa sangría de espacio en blanco, en lugar de corchetes o palabras clave, para delimitar bloques. Un aumento en la sangría viene después de ciertas declaraciones; una disminución en la sangría significa el final del bloque actual. Por lo tanto, la estructura visual del programa representa con precisión su estructura semántica. Esta característica a veces se denomina la regla del fuera de juego. Algunos otros idiomas usan la sangría de esta manera; pero en la mayoría, la sangría no tiene significado semántico. El tamaño de sangría recomendado es de cuatro espacios.

Declaraciones y flujo de control

Las declaraciones de Python incluyen:

La declaración de asignación (=) vincula un nombre como una referencia a un objeto independiente asignado dinámicamente. Posteriormente, las variables pueden volver a vincularse en cualquier momento a cualquier objeto. En Python, un nombre de variable es un titular de referencia genérico sin un tipo de datos fijo; sin embargo, siempre se refiere a algún objeto con un tipo. Esto se llama escritura dinámica, en contraste con los lenguajes de escritura estática, donde cada variable puede contener solo un valor de cierto tipo.

Python no admite la optimización de llamadas finales ni las continuaciones de primera clase y, según Van Rossum, nunca lo hará. Sin embargo, se proporciona un mejor soporte para la funcionalidad similar a la corrutina mediante la extensión de los generadores de Python. Antes de la versión 2.5, los generadores eran iteradores perezosos; los datos se pasaron unidireccionalmente fuera del generador. A partir de Python 2.5, es posible devolver datos a una función de generador; y desde la versión 3.3, se puede pasar a través de múltiples niveles de pila.

Expresiones

Las expresiones de Python incluyen:

En Python, se aplica estrictamente una distinción entre expresiones y sentencias, en contraste con lenguajes como Common Lisp, Scheme o Ruby. Esto lleva a duplicar algunas funciones. Por ejemplo:

Las declaraciones no pueden ser parte de una expresión, por lo que la lista y otras comprensiones o expresiones lambda, siendo todas expresiones, no pueden contener declaraciones. Un caso particular es que una declaración de asignación como a = 1 no puede formar parte de la expresión condicional de una instrucción condicional. Esto tiene la ventaja de evitar un error clásico de C de confundir un operador de asignación = con un operador de igualdad == en condiciones: if (c = 1) { ... } es código C sintácticamente válido (pero probablemente no intencionado), pero if c = 1: ... provoca un error de sintaxis en Python.

Métodos

Los métodos en los objetos son funciones adjuntas a la clase del objeto; la sintaxis instancia .método(argumento) es, para métodos y funciones normales, azúcar sintáctico para Clase.método (instancia, argumento). Los métodos de Python tienen un parámetro self explícito para acceder a los datos de la instancia, en contraste con el self implícito (o this) en algunos otros lenguajes de programación orientados a objetos (por ejemplo, C++, Java, Objective-C, Rubí). Python también proporciona métodos, a menudo llamados métodos dunder (debido a que sus nombres comienzan y terminan con guiones bajos dobles), para permitir que las clases definidas por el usuario modifiquen la forma en que las manejan las operaciones nativas, incluidas la longitud, la comparación, la en operaciones aritméticas y conversión de tipos.

Escribiendo

La jerarquía de tipo estándar en Python 3

Python utiliza la tipificación pato y tiene objetos tipificados pero nombres de variables no tipificados. Las restricciones de tipo no se comprueban en tiempo de compilación; más bien, las operaciones en un objeto pueden fallar, lo que significa que no es de un tipo adecuado. A pesar de estar tipado dinámicamente, Python está fuertemente tipado, prohibiendo operaciones que no están bien definidas (por ejemplo, agregar un número a una cadena) en lugar de intentar silenciosamente darles sentido.

Python permite a los programadores definir sus propios tipos mediante clases, que se utilizan con mayor frecuencia para la programación orientada a objetos. Las nuevas instancias de clases se construyen llamando a la clase (por ejemplo, SpamClass() o EggsClass()), y las clases son instancias de la metaclase type (en sí misma una instancia de sí misma), lo que permite la metaprogramación y la reflexión.

Antes de la versión 3.0, Python tenía dos tipos de clases (ambas con la misma sintaxis): estilo antiguo y estilo nuevo; las versiones actuales de Python solo admiten la semántica nuevo estilo.

El plan a largo plazo es admitir la escritura gradual. La sintaxis de Python permite especificar tipos estáticos, pero no se verifican en la implementación predeterminada, CPython. Un verificador de tipos estático opcional experimental, mypy, admite la verificación de tipos en tiempo de compilación.

Resumen de los tipos incorporados de Python 3
Tipo Mutabilidad Descripción Ejemplos sintaxis
boolinmutable Valor booleano True
False
bytearraymutable Secuencia de bytes bytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
bytesinmutable Secuencia de bytes b'Some ASCII'
b"Some ASCII"
bytes([119, 105, 107, 105])
complexinmutable Número complejo con partes reales e imaginarias 3+2.7j
3 + 2.7j
dictmutable array asociativo (o diccionario) de pares de clave y valor; puede contener tipos mixtos (keys y valores), claves debe ser un tipo apresurable {'key1': 1.0, 3: False}
{}
types.EllipsisTypeinmutable Un marcador de posición de elipsis para ser utilizado como índice en los arrays NumPy ...
Ellipsis
floatinmutable Doble precisión número de punto flotante. La precisión es dependiente de la máquina, pero en la práctica generalmente se implementa como un número IEEE 754 de 64 bits con 53 bits de precisión.

1.33333

frozensetinmutable Unordered set, no contiene duplicados; puede contener tipos mixtos, si es factible frozenset([4.0, 'string', True])
intinmutable entero de magnitud ilimitada 42
listmutable Lista, puede contener tipos mixtos [4.0, 'string', True]
[]
types.NoneTypeinmutable Un objeto que representa la ausencia de un valor, a menudo llamado nulo en otros idiomas None
types.NotImplementedTypeinmutable Un marcador de posición que puede ser devuelto de operadores sobrecargados para indicar tipos de operandos no soportados. NotImplemented
rangeinmutable An secuencia inmutable de números comúnmente usados para buclear un número específico de veces en for bucles range(-1, 10)
range(10, -5, -2)
setmutable Unordered set, no contiene duplicados; puede contener tipos mixtos, si es factible {4.0, 'string', True}
set()
strinmutable Una cadena de caracteres: secuencia de puntos de código Unicode 'Wikipedia'
"Wikipedia"
"Spanning"múltiplelíneas"
Spanningmúltiplelíneas
tupleinmutable Puede contener tipos mixtos (4.0, 'string', True)
('single element',)
()

Operaciones aritméticas

Python tiene los símbolos habituales de los operadores aritméticos (+, -, *, /), el operador de división de piso // y la operación de módulo % (donde el resto puede ser negativo, por ejemplo, 4 % -3 == -2). También tiene ** para exponenciación, p. 5**3 == 125 y 9**0.5 == 3.0, y un operador de multiplicación de matrices @. Estos operadores funcionan como en las matemáticas tradicionales; con las mismas reglas de precedencia, los operadores infijos (+ y - también pueden ser únicos para representar números positivos y negativos respectivamente).

La división entre enteros produce resultados de punto flotante. El comportamiento de la división ha cambiado significativamente con el tiempo:

En términos de Python, / es verdadera división (o simplemente división), y // es división de piso. / antes de la versión 3.0 es división clásica.

El redondeo hacia el infinito negativo, aunque es diferente de la mayoría de los idiomas, agrega consistencia. Por ejemplo, significa que la ecuación (a + b)//b == a//b + 1 siempre es verdadero. También significa que la ecuación b*(a//b) + a%b == a es válido tanto para valores positivos como negativos de a. Sin embargo, mantener la validez de esta ecuación significa que mientras el resultado de a%b está, como se esperaba, en el intervalo semiabierto [0, b), donde b es un entero positivo, tiene que estar en el intervalo (b, 0] cuando b es negativo.

Python proporciona una función round para redondear un flotante al entero más cercano. Para el desempate, Python 3 usa round to even: round(1.5) y round(2.5) ambos producen 2. Las versiones anteriores a la 3 usaban el redondeo desde cero: round(0.5) es 1.0, round(-0.5) es − 1.0.

Python permite expresiones booleanas con múltiples relaciones de igualdad de una manera consistente con el uso general en matemáticas. Por ejemplo, la expresión a < b < c comprueba si a es menor que b y si b es menor que c. Los lenguajes derivados de C interpretan esta expresión de manera diferente: en C, la expresión primero evaluaría a < b, dando como resultado 0 o 1, y ese resultado luego se compararía con c.

Python usa aritmética de precisión arbitraria para todas las operaciones con enteros. El tipo/clase Decimal en el módulo decimal proporciona números de punto flotante decimal con una precisión arbitraria predefinida y varios modos de redondeo. La clase Fraction en el módulo fractions proporciona precisión arbitraria para números racionales.

Debido a la extensa biblioteca de matemáticas de Python y la biblioteca de terceros NumPy que amplía aún más las capacidades nativas, se usa con frecuencia como un lenguaje de secuencias de comandos científicas para ayudar en problemas como el procesamiento y la manipulación de datos numéricos.

Ejemplos de programación

Programa Hola mundo:

impresión()¡Hola, mundo! ')

Programa para calcular el factorial de un entero positivo:

n = int()entrada()'Tipo un número, y su factorial será impreso: ')si n . 0: aumento ValueError()' Usted debe entrar en un entero no negativo ')factorial = 1para i dentro rango()2, n + 1): factorial *= iimpresión()factorial)

Bibliotecas

La gran biblioteca estándar de Python proporciona herramientas adecuadas para muchas tareas y se cita comúnmente como una de sus mayores fortalezas. Para las aplicaciones orientadas a Internet, se admiten muchos formatos y protocolos estándar, como MIME y HTTP. Incluye módulos para crear interfaces gráficas de usuario, conectarse a bases de datos relacionales, generar números pseudoaleatorios, aritmética con decimales de precisión arbitraria, manipular expresiones regulares y pruebas unitarias.

Algunas partes de la biblioteca estándar están cubiertas por especificaciones, por ejemplo, la implementación de la interfaz de puerta de enlace del servidor web (WSGI) wsgiref sigue PEP 333, pero la mayoría están especificadas por su código, documentación interna y suites de prueba. Sin embargo, debido a que la mayor parte de la biblioteca estándar es código Python multiplataforma, solo algunos módulos necesitan modificarse o reescribirse para implementaciones variantes.

A partir del 14 de noviembre de 2022, el Índice de paquetes de Python (PyPI), el repositorio oficial de software de Python de terceros, contiene más de 415.000 paquetes con una amplia variedad de funciones, entre las que se incluyen:

  • Automatización
  • Análisis de datos
  • Bases de datos
  • Documentación
  • Interfaz gráfica de usuario
  • Procesamiento de imagen
  • Aprendizaje a máquina
  • Aplicaciones móviles
  • Multimedia
  • Redes informáticas
  • Computación científica
  • Administración de sistemas
  • Marcos de prueba
  • Procesamiento de texto
  • Marcos web
  • Web scraping

Entornos de desarrollo

La mayoría de las implementaciones de Python (incluido CPython) incluyen un ciclo de lectura, evaluación e impresión (REPL), lo que les permite funcionar como un intérprete de línea de comandos para el cual los usuarios ingresan declaraciones secuencialmente y reciben resultados de inmediato.

Python también viene con un entorno de desarrollo integrado (IDE) llamado IDLE, que está más orientado a principiantes.

Otros shells, incluidos IDLE e IPython, agregan capacidades adicionales, como la finalización automática mejorada, la retención del estado de la sesión y el resaltado de sintaxis.

Además de los entornos de desarrollo integrados de escritorio estándar, existen IDE basados en navegador web, incluido SageMath, para desarrollar programas relacionados con las ciencias y las matemáticas; PythonAnywhere, un IDE basado en navegador y un entorno de alojamiento; y Canopy IDE, un IDE comercial que enfatiza la computación científica.

Implementaciones

Implementación de referencia

CPython es la implementación de referencia de Python. Está escrito en C, cumple con el estándar C89 (Python 3.11 usa C11) con varias funciones C99 seleccionadas (con versiones posteriores de C, se considera obsoleto. CPython incluye sus propias extensiones C, pero las extensiones de terceros no se limitan a versiones anteriores). Versiones C, por ejemplo, se pueden implementar con C11 o C++.) Compila programas de Python en un código de bytes intermedio que luego es ejecutado por su máquina virtual. CPython se distribuye con una gran biblioteca estándar escrita en una mezcla de C y Python nativo, y está disponible para muchas plataformas, incluido Windows (a partir de Python 3.9, el instalador de Python falla deliberadamente al instalarse en Windows 7 y 8; Windows XP era compatible hasta Python 3.5) y la mayoría de los sistemas similares a Unix modernos, incluidos macOS (y Apple M1 Macs, desde Python 3.9.1, con instalador experimental) y soporte no oficial para, p. VMS. La portabilidad de la plataforma fue una de sus primeras prioridades. (Durante el desarrollo de Python 1 y 2, incluso OS/2 y Solaris eran compatibles, pero desde entonces se ha eliminado la compatibilidad con muchas plataformas).

Otras implementaciones

Implementaciones no admitidas

Se han desarrollado otros compiladores de Python justo a tiempo, pero ahora no son compatibles:

Compiladores cruzados a otros lenguajes

Hay varios compiladores para lenguajes de objetos de alto nivel, con Python sin restricciones, un subconjunto restringido de Python o un lenguaje similar a Python como lenguaje de origen:

Especializados:

Proyectos más antiguos (o que no se usen con Python 3.x y la sintaxis más reciente):

Rendimiento

La comparación de rendimiento de varias implementaciones de Python en una carga de trabajo no numérica (combinatoria) se presentó en EuroSciPy '13. El rendimiento de Python en comparación con otros lenguajes de programación también se compara con The Computer Language Benchmarks Game.

Desarrollo

El desarrollo de Python se lleva a cabo en gran medida a través del proceso de Propuesta de mejora de Python (PEP), el mecanismo principal para proponer nuevas funciones importantes, recopilar comentarios de la comunidad sobre problemas y documentar las decisiones de diseño de Python. El estilo de codificación de Python se cubre en PEP 8. La comunidad de Python y el consejo directivo revisan y comentan los PEP sobresalientes.

La mejora del lenguaje se corresponde con el desarrollo de la implementación de referencia de CPython. La lista de correo python-dev es el foro principal para el desarrollo del lenguaje. Los problemas específicos se discutieron originalmente en el rastreador de errores de Roundup alojado en la fundación. En 2022, todos los problemas y debates se migraron a GitHub. El desarrollo se llevó a cabo originalmente en un repositorio de código fuente autohospedado que ejecutaba Mercurial, hasta que Python se trasladó a GitHub en enero de 2017.

Los lanzamientos públicos de CPython vienen en tres tipos, que se distinguen por qué parte del número de versión se incrementa:

Muchos candidatos alfa, beta y de lanzamiento también se lanzan como vistas previas y para probarlos antes de los lanzamientos finales. Aunque hay un cronograma aproximado para cada lanzamiento, a menudo se retrasan si el código no está listo. El equipo de desarrollo de Python supervisa el estado del código ejecutando el conjunto de pruebas de unidades grandes durante el desarrollo.

La principal conferencia académica sobre Python es PyCon. También hay programas especiales de tutoría de Python, como Pyladies.

Python 3.10 dejó obsoleto a wstr (se eliminará en Python 3.12; lo que significa que las extensiones de Python deben modificarse para entonces) y agregó la coincidencia de patrones con el lenguaje.

Generadores de documentación API

Las herramientas que pueden generar documentación para la API de Python incluyen pydoc (disponible como parte de la biblioteca estándar), Sphinx, Pdoc y sus bifurcaciones, Doxygen y Graphviz, entre otras.

Nombramiento

El nombre de Python se deriva del grupo de comedia británico Monty Python, a quien el creador de Python, Guido van Rossum, disfrutó mientras desarrollaba el lenguaje. Las referencias a Monty Python aparecen con frecuencia en el código y la cultura de Python; por ejemplo, las variables metasintácticas que se usan a menudo en la literatura de Python son spam y huevos en lugar de los tradicionales foo y bar. La documentación oficial de Python también contiene varias referencias a las rutinas de Monty Python.

El prefijo Py- se usa para mostrar que algo está relacionado con Python. Los ejemplos del uso de este prefijo en nombres de aplicaciones o bibliotecas de Python incluyen Pygame, un enlace de SDL a Python (comúnmente utilizado para crear juegos); PyQt y PyGTK, que unen Qt y GTK a Python respectivamente; y PyPy, una implementación de Python escrita originalmente en Python.

Popularidad

Desde 2003, Python se ha clasificado constantemente entre los diez lenguajes de programación más populares en el índice de la comunidad de programación de TIOBE, donde en diciembre de 2022 era el lenguaje más popular (por delante de C, C++ y Java). Fue seleccionado Lenguaje de programación del año (por "el mayor aumento de calificaciones en un año") en 2007, 2010, 2018 y 2020 (el único lenguaje que lo ha hecho cuatro veces a partir de 2020).

Un estudio empírico encontró que los lenguajes de secuencias de comandos, como Python, son más productivos que los lenguajes convencionales, como C y Java, para problemas de programación que involucran la manipulación de cadenas y la búsqueda en un diccionario, y determinó que el consumo de memoria a menudo era "mejor que Java y no mucho peor que C o C++".

Las grandes organizaciones que usan Python incluyen Wikipedia, Google, Yahoo!, CERN, NASA, Facebook, Amazon, Instagram, Spotify y algunas entidades más pequeñas como ILM e ITA. El sitio de redes sociales de noticias Reddit se escribió principalmente en Python.

Usos

Python Powered

Python puede servir como lenguaje de secuencias de comandos para aplicaciones web, por ejemplo, a través de mod_wsgi para el servidor web Apache. Con Web Server Gateway Interface, una API estándar ha evolucionado para facilitar estas aplicaciones. Los marcos web como Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle y Zope ayudan a los desarrolladores en el diseño y mantenimiento de aplicaciones complejas. Pyjs y IronPython se pueden usar para desarrollar el lado del cliente de las aplicaciones basadas en Ajax. SQLAlchemy se puede utilizar como un asignador de datos a una base de datos relacional. Twisted es un framework para programar comunicaciones entre ordenadores, y lo utiliza (por ejemplo) Dropbox.

Bibliotecas como NumPy, SciPy y Matplotlib permiten el uso efectivo de Python en computación científica, con bibliotecas especializadas como Biopython y Astropy que brindan funcionalidades específicas de dominio. SageMath es un sistema de álgebra computacional con una interfaz de computadora portátil programable en Python: su biblioteca cubre muchos aspectos de las matemáticas, que incluyen álgebra, combinatoria, matemáticas numéricas, teoría de números y cálculo. OpenCV tiene enlaces de Python con un amplio conjunto de características para la visión por computadora y el procesamiento de imágenes.

Python se usa comúnmente en proyectos de inteligencia artificial y proyectos de aprendizaje automático con la ayuda de bibliotecas como TensorFlow, Keras, Pytorch y scikit-learn. Como lenguaje de secuencias de comandos con una arquitectura modular, sintaxis simple y herramientas de procesamiento de texto enriquecido, Python se usa a menudo para el procesamiento de lenguaje natural.

Python también se puede usar para crear juegos, con bibliotecas como Pygame, que pueden crear juegos en 2D.

Python se ha integrado con éxito en muchos productos de software como lenguaje de secuencias de comandos, incluso en software de método de elementos finitos como Abaqus, modeladores paramétricos 3D como FreeCAD, paquetes de animación 3D como 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage, el compositor de efectos visuales Nuke, programas de imágenes 2D como GIMP, Inkscape, Scribus y Paint Shop Pro, y programas de notación musical como scorewriter y capella. GNU Debugger usa Python como una bonita impresora para mostrar estructuras complejas como contenedores C++. Esri promueve Python como la mejor opción para escribir scripts en ArcGIS. También se ha utilizado en varios videojuegos y se ha adoptado como el primero de los tres lenguajes de programación disponibles en Google App Engine, siendo los otros dos Java y Go.

Muchos sistemas operativos incluyen Python como componente estándar. Se envía con la mayoría de las distribuciones de Linux, AmigaOS 4 (con Python 2.7), FreeBSD (como paquete), NetBSD y OpenBSD (como paquete) y se puede usar desde la línea de comandos (terminal). Muchas distribuciones de Linux usan instaladores escritos en Python: Ubuntu usa el instalador Ubiquity, mientras que Red Hat Linux y Fedora Linux usan el instalador Anaconda. Gentoo Linux usa Python en su sistema de administración de paquetes, Portage.

Python se usa ampliamente en la industria de la seguridad de la información, incluso en el desarrollo de exploits.

La mayor parte del software de Sugar para One Laptop per Child XO, desarrollado en Sugar Labs desde 2008, está escrito en Python. El proyecto de computadora de placa única Raspberry Pi ha adoptado Python como su principal lenguaje de programación de usuarios.

LibreOffice incluye Python y pretende reemplazar Java con Python. Su Python Scripting Provider es una función central desde la versión 4.0 del 7 de febrero de 2013.

Lenguajes influenciados por Python

El diseño y la filosofía de Python han influido en muchos otros lenguajes de programación:

Las prácticas de desarrollo de Python también han sido emuladas por otros lenguajes. Por ejemplo, la práctica de solicitar un documento que describa la justificación y los problemas relacionados con un cambio en el lenguaje (en Python, un PEP) también se usa en Tcl, Erlang y Swift.