Python es un lenguaje de programación de alto nivel y propósito general que enfatiza la legibilidad del código , la simplicidad y la facilidad de escritura mediante el uso de una sangría significativa , [ 38 ] una extensa biblioteca estándar ("baterías incluidas") y recolección de basura . Python admite múltiples paradigmas de programación , pero con énfasis en la programación orientada a objetos y el tipado dinámico .
Guido van Rossum comenzó a trabajar en Python a finales de la década de 1980 como sucesor del lenguaje de programación ABC . Python 3.0, lanzado en 2008, fue una revisión importante y no completamente compatible con versiones anteriores. A partir de Python 3.5, [ 39 ] se agregaron capacidades y palabras clave para la tipificación al lenguaje, lo que permitió la tipificación estática opcional . [ 40 ] A partir de 2026La Python Software Foundation admite Python 3.10, 3.11, 3.12, 3.13 y 3.14, siguiendo el ciclo de lanzamiento anual del proyecto y la política de soporte de cinco años. Python 3.15 se encuentra actualmente en la fase de desarrollo beta, y se espera que la versión estable se lance en octubre de 2026. [ 41 ] Las versiones anteriores de la serie 3.x han llegado al final de su ciclo de vida y ya no reciben actualizaciones de seguridad.
Python ha adquirido un uso extensivo en la comunidad de aprendizaje automático . [ 42 ] [ 43 ] [ 44 ] [ 45 ] Se enseña ampliamente como lenguaje de programación introductorio. [ 46 ] Desde 2003, Python se ha clasificado consistentemente entre los diez lenguajes de programación más populares en el Índice de la Comunidad de Programación TIOBE , que clasifica los lenguajes de programación en función de las búsquedas en 24 plataformas. [ 47 ]
Historia

Python fue concebido a finales de la década de 1980 [ 11 ] por Guido van Rossum en Centrum Wiskunde & Informatica (CWI) en los Países Bajos . [ 48 ] Fue diseñado como sucesor del lenguaje de programación ABC , que se inspiró en SETL , [ 49 ] capaz de manejar excepciones e interactuar con el sistema operativo Amoeba . [ 18 ] La implementación de Python comenzó en diciembre de 1989. [ 48 ] Van Rossum lo lanzó por primera vez en 1991 como Python 0.9.0. [ 48 ] Van Rossum asumió la responsabilidad exclusiva del proyecto, como desarrollador principal, hasta el 12 de julio de 2018, cuando anunció sus "vacaciones permanentes" de las responsabilidades como " dictador benevolente de por vida " (BDFL) de Python; este título le fue otorgado por la comunidad de Python para reflejar su compromiso a largo plazo como principal responsable de la toma de decisiones del proyecto. [ 50 ] [ c ] En enero de 2019, los desarrolladores principales activos de Python eligieron un Consejo Directivo de cinco miembros para liderar el proyecto. [ 51 ] [ 52 ]
El nombre Python deriva de la serie de comedia británica Monty Python's Flying Circus . [ 53 ] (Véase § Nomenclatura ).
Python 2.0 se lanzó el 16 de octubre de 2000, con muchas características nuevas como comprensiones de listas , recolección de basura con detección de ciclos , conteo de referencias y soporte para Unicode . [ 54 ] El fin del ciclo de vida de Python 2.7 se estableció inicialmente para 2015, y luego se pospuso a 2020 debido a la preocupación de que una gran cantidad de código existente no pudiera portarse fácilmente a Python 3. [ 55 ] [ 56 ] Ya no recibe parches de seguridad ni actualizaciones. [ 57 ] [ 58 ] Si bien Python 2.7 y versiones anteriores no tienen soporte oficial, una implementación no oficial de Python diferente, PyPy , continúa siendo compatible con Python 2, es decir, "2.7.18+" (más 3.11 ), donde el signo más significa (al menos algunas) " actualizaciones de seguridad retroportadas ". [ 59 ]
Python 3.0 se publicó el 3 de diciembre de 2008 y fue una revisión importante, no completamente compatible con versiones anteriores, con algunas semánticas nuevas y una sintaxis modificada. Python 2.7.18, publicado en 2020, fue la última versión de Python 2. [ 60 ] Varias versiones de la serie Python 3.x han añadido nueva sintaxis al lenguaje y han introducido algunos cambios (considerados muy menores) que no son compatibles con versiones anteriores.
A partir de mayo de 2026Python 3.14.6 es la última versión estable. Todas las versiones anteriores de 3.x tuvieron una actualización de seguridad hasta Python 3.9.24 y luego otra con 3.9.25, la versión final de la serie 3.9. Python 3.10 es, desde noviembre de 2025, la rama más antigua con soporte. [ 61 ] Python 3.15 tiene una versión alfa publicada, y Android tiene un ejecutable oficial descargable disponible para Python 3.14. Las versiones reciben dos años de soporte completo seguidos de tres años de soporte de seguridad.
Filosofía y características de diseño
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 características admiten la programación funcional y la programación orientada a aspectos , incluyendo la metaprogramación [ 62 ] y los metaobjetos [ 63 ] . Muchos otros paradigmas son compatibles a través de extensiones, incluyendo el diseño por contrato [ 64 ] [ 65 ] y la programación lógica [ 66 ] . A menudo se hace referencia a Python como un "lenguaje de unión" [ 67 ] porque está diseñado específicamente para poder integrar componentes escritos en otros lenguajes.
Python utiliza tipado dinámico y una combinación de conteo de referencias y un recolector de basura con detección de ciclos para la gestión de memoria . [ 68 ] Utiliza resolución dinámica de nombres ( enlace tardío ), que enlaza nombres de métodos y variables durante la ejecución del programa.
El diseño de Python ofrece cierto soporte para la programación funcional en la " tradición Lisp ". Tiene funciones filter, map, y ; comprensiones de listas , diccionarios , conjuntos y expresiones generadoras . [ 69 ] La biblioteca estándar tiene dos módulos ( y ) que implementan herramientas funcionales tomadas de Haskell y Standard ML . [ 70 ]reduceitertoolsfunctools
La filosofía central de Python se resume en el Zen de Python (PEP 20) escrito por Tim Peters , que incluye aforismos como estos: [ 71 ]
- Lo explícito es mejor que lo implícito.
- Lo simple es mejor que lo complejo.
- La legibilidad es importante.
- Los casos especiales no son lo suficientemente especiales como para romper las reglas.
- Si bien la practicidad prevalece sobre la pureza, los errores nunca deben pasar desapercibidos, a menos que se prohíban explícitamente.
- Debería haber una —y preferiblemente solo una— manera obvia de hacerlo.
Sin embargo, Python ha recibido críticas por violar estos principios y añadir una complejidad innecesaria al lenguaje. [ 72 ] Las respuestas a estas críticas señalan que el Zen de Python es una guía más que una regla. [ 73 ] La adición de algunas características nuevas fue controvertida: Guido van Rossum renunció como Dictador Benevolente de por Vida tras un conflicto sobre la adición del operador de expresión de asignación en Python 3.8. [ 74 ] [ 75 ]
Sin embargo, en lugar de integrar toda la funcionalidad en su núcleo, Python fue diseñado para ser altamente extensible mediante módulos. Esta modularidad compacta lo ha hecho particularmente popular como medio para agregar interfaces programables a aplicaciones existentes. La visión de Van Rossum de un lenguaje con un núcleo pequeño, una gran biblioteca estándar y un intérprete fácilmente extensible surgió de su frustración con ABC, que representaba el enfoque opuesto. [ 11 ]
Python afirma esforzarse por lograr una sintaxis y gramática más simples y menos recargadas, al tiempo que ofrece a los desarrolladores la posibilidad de elegir su metodología de codificación. Python carece de do .. whilebucles , que Rossum consideraba perjudiciales. [ 76 ] A diferencia del lema de Perl " hay más de una manera de hacerlo ", Python aboga por un enfoque en el que "debería haber una, y preferiblemente solo una, manera obvia de hacerlo". [ 71 ] Sin embargo, en la práctica, Python ofrece muchas maneras de lograr un objetivo determinado. Hay al menos tres maneras de formatear un literal de cadena, sin certeza sobre cuál debería usar un programador. [ 77 ] Alex Martelli es miembro de la Python Software Foundation y autor de libros sobre Python; escribió que "Describir algo como 'inteligente' no se considera un cumplido en la cultura de Python". [ 78 ]
Los desarrolladores de Python suelen priorizar la legibilidad sobre el rendimiento. Por ejemplo, rechazan parches para partes no críticas de la implementación de referencia de CPython que ofrecerían aumentos de velocidad que no justifican el costo de la claridad y la legibilidad. [ 79 ] La velocidad de ejecución se puede mejorar moviendo funciones críticas para la velocidad a módulos de extensión escritos en lenguajes como C , o usando un compilador justo a tiempo como PyPy . También es posible transcompilar a otros lenguajes. Sin embargo, este enfoque o bien no logra el aumento de velocidad esperado, ya que Python es un lenguaje muy dinámico , o solo se compila un subconjunto restringido de Python (con posibles cambios semánticos menores). [ 80 ]
Python está pensado para ser un lenguaje divertido de usar. [ 81 ] : 3 Este objetivo se refleja en el nombre —un homenaje al grupo cómico británico Monty Python [ 82 ] — y en los enfoques lúdicos de algunos tutoriales y materiales de referencia. Por ejemplo, algunos ejemplos de código utilizan los términos "spam" y "huevos" (en referencia a un sketch de Monty Python ), en lugar de los términos típicos "foo" y "bar" . [ 81 ] [ 83 ]
Un neologismo común en la comunidad de Python es pythonic , que tiene una amplia gama de significados relacionados con el estilo de programación: el código Pythonico puede usar bien las convenciones de Python ; ser natural o mostrar fluidez en el lenguaje; o ajustarse a la filosofía minimalista de Python y su énfasis en la legibilidad. [ 84 ]
Propuestas de mejora
Las propuestas de mejora de Python [ nota 1 ] son documentos de diseño que proporcionan información a la comunidad de Python o proponen nuevas características para Python. [ 85 ] Las PEP tienen como objetivo explicar nuevos procesos en Python, proporcionar convenciones de nomenclatura o documentar los procesos en el lenguaje. [ 86 ] Las PEP son supervisadas por el Consejo Directivo de Python. [ 86 ]
Hay 3 tipos de PEP, que son PEP de seguimiento de estándares [ nota 2 ] , PEP informativos [ nota 3 ] y PEP de proceso [ nota 4 ] , cada uno con su propio significado. [ 85 ] [ 87 ] Se introdujeron por primera vez en 2000, inspirados en otras RfC (solicitudes de comentarios) y Propuestas de mejora de diseño. [ 87 ] Los PEP más conocidos son PEP - 1, PEP - 8, PEP - 20 , PEP - 257 y otros. [ 87 ]
Sintaxis y semántica
Python está diseñado para ser un lenguaje de fácil lectura. Su formato es visualmente claro y suele usar palabras clave en inglés donde otros lenguajes usan signos de puntuación. A diferencia de muchos otros lenguajes, no usa llaves para delimitar bloques, y aunque se permiten puntos y comas después de las sentencias, rara vez se usan. Tiene menos excepciones sintácticas y casos especiales que C o Pascal . [ 88 ]
Sangría
Python utiliza la indentación con espacios en blanco , en lugar de llaves o palabras clave, para delimitar bloques . Un aumento en la indentación se produce después de ciertas instrucciones; una disminución en la indentación indica el final del bloque actual. [ 89 ] De esta manera, la estructura visual del programa representa con precisión su estructura semántica. [ 90 ] Esta característica a veces se denomina regla de fuera de línea . Algunos otros lenguajes utilizan la indentación de esta manera; pero en la mayoría, la indentación no tiene significado semántico. El tamaño de indentación recomendado es de cuatro espacios. [ 91 ]
Instrucciones y flujo de control
Las instrucciones de Python incluyen las siguientes:
- La instrucción de asignación , utilizando un solo signo de igual
= - La
ifinstrucción, que ejecuta condicionalmente un bloque de código, junto conelseyelif(una contracción deelse if) - La
forinstrucción itera sobre un objeto iterable , capturando cada elemento en una variable para su uso por el bloque adjunto; la variable no se elimina cuando finaliza el bucle. - La
whileinstrucción ejecuta un bloque de código mientras la condición booleana sea verdadera. - La
tryinstrucción, que permite que las excepciones generadas en su bloque de código adjunto sean capturadas y manejadas porexceptcláusulas (o nueva sintaxisexcept*en Python 3.11 para grupos de excepciones); [ 92 ] latryinstrucción también garantiza que el código de limpieza en unfinallybloque siempre se ejecute independientemente de cómo finalice el bloque. - La
raiseinstrucción se utiliza para generar una excepción específica o volver a generar una excepción capturada. - La
classinstrucción, que ejecuta un bloque de código y adjunta su espacio de nombres local a una clase , para su uso en programación orientada a objetos. - La
defdeclaración que define una función o método. - La
withinstrucción, que encierra un bloque de código dentro de un gestor de contexto, permite un comportamiento similar a la adquisición de recursos mediante inicialización (RAII) y reemplaza un modismo común try/finally [ 93 ]. Ejemplos de un contexto incluyen adquirir un bloqueo antes de que se ejecute algún código y luego liberar el bloqueo; o abrir y luego cerrar un archivo. - La
breakinstrucción, que sale de un bucle - La
continuedeclaración, que omite el resto de la iteración actual y continúa con la siguiente - La
delinstrucción, que elimina una variable, borrando la referencia del nombre al valor y produciendo un error si se hace referencia a la variable antes de que se redefina [ d ]. - La
passinstrucción, que actúa como una NOP (es decir, ninguna operación), es necesaria sintácticamente para crear un bloque de código vacío. - La
assertinstrucción, utilizada en la depuración para comprobar las condiciones que deben aplicarse - La
yieldinstrucción, que devuelve un valor de una función generadora (y también un operador); se utiliza para implementar corrutinas. - La
returninstrucción, utilizada para devolver un valor desde una función - Las sentencias
import`and`fromse utilizan para importar módulos cuyas funciones o variables pueden usarse en el programa actual. Python 3.15 añade una nueva funcionalidad para importar de forma diferida con una nueva palabra clave: "Lalazypalabra clave funciona con ambas sentenciasimport`and`from ... import." [ 94 ] - Las sentencias
matchANDcase, análogas a una estructura de sentencia switch , comparan una expresión con uno o más casos como medida de control de flujo.
La instrucción de asignación ( =) vincula un nombre como 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 contenedor de referencia genérico sin un tipo de dato fijo ; sin embargo, siempre se refiere a algún objeto con un tipo. Esto se denomina tipado dinámico , a diferencia de los lenguajes de tipado estático , donde cada variable solo puede contener un valor de un tipo determinado.
Python no admite la optimización de llamadas recursivas ni las continuaciones de primera clase ; según Van Rossum, el lenguaje nunca lo hará. [ 95 ] [ 96 ] Sin embargo, se proporciona un mejor soporte para la funcionalidad similar a las corrutinas extendiendo los generadores de Python. [ 97 ] Antes de la versión 2.5, los generadores eran iteradores perezosos ; los datos se pasaban unidireccionalmente fuera del generador. A partir de Python 2.5, es posible pasar datos de vuelta a una función generadora; y desde la versión 3.3, los datos se pueden pasar a través de múltiples niveles de pila. [ 98 ]
Expresiones
Las expresiones de Python incluyen las siguientes:
- Los operadores
+,-, y*para suma, resta y multiplicación matemáticas son similares a otros lenguajes, pero el comportamiento de la división difiere. Hay dos tipos de división en Python: división entera (o división de piso)//y división de punto flotante/. [ 99 ] Python utiliza el**operador para la exponenciación. - Python utiliza el
+operador para la concatenación de cadenas. El lenguaje utiliza el*operador para duplicar una cadena un número específico de veces. - El
@operador infijo está diseñado para ser utilizado por bibliotecas como NumPy para la multiplicación de matrices . [ 100 ] [ 101 ] - La sintaxis
:=, llamada "El operador morsa ", se introdujo en Python 3.8. Este operador asigna valores a variables como parte de una expresión más grande. [ 102 ] - En Python,
==compara dos objetos por valor.isEl operador de Python se puede usar para comparar identidades de objetos (es decir, comparación por referencia), y las comparaciones se pueden encadenar, por ejemplo, .a<=b<=c - Python utiliza
and,or, ynotcomo operadores booleanos. - Python tiene un tipo de expresión llamada comprensión de lista y una expresión más general llamada expresión generadora . [ 69 ]
- Las funciones anónimas se implementan mediante expresiones lambda ; sin embargo, solo puede haber una expresión en cada cuerpo.
- Las expresiones condicionales se escriben como . [ 103 ] (Esto difiere en el orden de los operandos del operador común a muchos otros lenguajes).
xifcelseyc ? x : y - Python distingue entre listas y tuplas . Las listas se escriben como , son mutables y no se pueden usar como claves de diccionarios (ya que las claves de los diccionarios deben ser inmutables en Python). Las tuplas, escritas como , son inmutables y, por lo tanto, se pueden usar como claves de diccionarios, siempre que todos los elementos de la tupla sean inmutables. El operador se puede usar para concatenar dos tuplas, lo que no modifica directamente su contenido, sino que produce una nueva tupla que contiene los elementos de ambas. Por ejemplo, dada la variable inicialmente igual a , ejecutar primero evalúa , lo que produce ; este resultado se asigna luego a —modificando así efectivamente el contenido de mientras se cumple con la naturaleza inmutable de los objetos tupla. Los paréntesis son opcionales para las tuplas en contextos no ambiguos. [ 104 ]
[1,2,3](1,2,3)+t(1,2,3)t=t+(4,5)t+(4,5)(1,2,3,4,5)tt - Python cuenta con la función de desempaquetado de secuencias, donde múltiples expresiones, cada una evaluada en un valor asignable (por ejemplo, una variable o una propiedad modificable), se asocian como en la formación de una tupla literal; en conjunto, los resultados se colocan a la izquierda del signo igual en una instrucción de asignación. Esta instrucción espera que un objeto iterable a la derecha del signo igual produzca la misma cantidad de valores que las expresiones modificables a la izquierda; durante la iteración, la instrucción asigna cada uno de los valores producidos a la derecha a la expresión correspondiente a la izquierda. [ 105 ]
- Python tiene un operador de "formato de cadena"
%que funciona de forma análoga aprintflas cadenas de formato en el lenguaje C; por ejemplo, se evalúa como . En Python 2.6+ y 3+, este operador se complementó con el método de la clase, por ejemplo, . Python 3.6 añadió "cadenas f": . [ 106 ]"spam=%s eggs=%d"%("blah",2)"spam=blah eggs=2"format()str"spam={0} eggs={1}".format("blah",2)spam="blah";eggs=2;f'spam={spam} eggs={eggs}' - En Python, las cadenas se pueden concatenar "sumándolas" (usando el mismo operador que para sumar enteros y números de coma flotante); por ejemplo, devuelve . Si las cadenas contienen números, se concatenan como cadenas en lugar de como enteros, por ejemplo, devuelve .
"spam"+"eggs""spameggs""2"+"2""22" - Python admite literales de cadena de varias maneras:
- Delimitado por comillas simples o dobles; las comillas simples y dobles tienen una funcionalidad equivalente (a diferencia de los shells de Unix , Perl y los lenguajes influenciados por Perl). Ambas marcas utilizan la barra invertida (
\) como carácter de escape . La interpolación de cadenas estuvo disponible en Python 3.6 como "literales de cadena formateados". [ 106 ] - Entre comillas triples, es decir, que comienzan y terminan con tres comillas simples o dobles; esto puede abarcar varias líneas y funcionar como los documentos aquí en shells, Perl y Ruby .
- Las cadenas sin formato se denotan anteponiendo una barra invertida
ral literal de cadena . Las secuencias de escape no se interpretan; por lo tanto, las cadenas sin formato son útiles donde las barras invertidas literales son comunes, como en expresiones regulares y rutas de estilo Windows . (Compárese con el uso de@comillas invertidas en C# ).
- Delimitado por comillas simples o dobles; las comillas simples y dobles tienen una funcionalidad equivalente (a diferencia de los shells de Unix , Perl y los lenguajes influenciados por Perl). Ambas marcas utilizan la barra invertida (
- Python tiene expresiones de índice y segmentación de arrays en listas, que se escriben como
a[key], o . Los índices son de base cero , y los índices negativos son relativos al final. Las segmentaciones toman elementos desde el índice de inicio hasta, pero sin incluir, el índice de parada . El tercer parámetro de segmentación (opcional) , llamado paso o zancada , permite omitir o invertir elementos. Los índices de segmentación pueden omitirse; por ejemplo, devuelve una copia de toda la lista. Cada elemento de una segmentación es una copia superficial .a[start:stop]a[start:stop:step]a[:]
En Python, la distinción entre expresiones y sentencias se impone de forma rígida, a diferencia de lenguajes como Common Lisp , Scheme o Ruby . Esta distinción conlleva la duplicación de algunas funcionalidades, por ejemplo:
- Comprensiones de listas frente a
forbucles - Expresiones condicionales
iffrente a bloques - Las funciones integradas
eval()vs. (en Python 2, es una instrucción); la primera función es para expresiones, mientras que la segunda es para instrucciones.exec()exec
Una instrucción no puede formar parte de una expresión; debido a esta restricción, expresiones como listas y dictcomprensiones (y expresiones lambda) no pueden contener instrucciones. Como caso particular, una instrucción de asignación como no puede formar parte de la expresión condicional de una instrucción condicional.a=1
Mecanografía

Python utiliza tipado dinámico ( duck typing) , lo que significa que tiene objetos tipados pero nombres de variables sin tipado. Las restricciones de tipo no se verifican en el momento de la definición; en cambio, las operaciones sobre un objeto pueden fallar en el momento de su uso, lo que indica que el objeto no es del tipo apropiado. A pesar de ser de tipado dinámico , Python es fuertemente tipado , lo que impide las operaciones mal definidas (por ejemplo, sumar un número y una cadena) en lugar de intentar interpretarlas de forma silenciosa.
Python permite a los programadores definir sus propios tipos usando clases , sobre todo para la programación orientada a objetos . Las nuevas instancias de las clases se construyen llamando a la clase, por ejemplo, o ); las clases son instancias de la metaclase (que es una instancia de sí misma), lo que permite la metaprogramación y la reflexión .SpamClass()EggsClass()type
Antes de la versión 3.0, Python tenía dos tipos de clases, ambas con la misma sintaxis: estilo antiguo y estilo nuevo . [ 107 ] Las versiones actuales de Python solo admiten la semántica del estilo nuevo.
Python admite anotaciones de tipo opcionales . [ 5 ] [ 108 ] Estas anotaciones no son obligatorias por el lenguaje, pero pueden ser utilizadas por herramientas externas como mypy para detectar errores. Python incluye un módulo typingcon varios nombres de tipo para anotaciones de tipo. [ 109 ] [ 110 ] Además, mypy admite un compilador de Python llamado mypyc, que aprovecha las anotaciones de tipo para la optimización. [ 111 ]
Operaciones aritméticas
Python incluye símbolos convencionales para operadores aritméticos ( +, -, *, /), el operador de división entera //y el operador módulo% . (Con el operador módulo, el resto puede ser negativo, por ejemplo, .) Python también ofrece el símbolo para la exponenciación , por ejemplo y , así como el operador de multiplicación de matrices . [ 118 ] Estos operadores funcionan como en las matemáticas tradicionales; con las mismas reglas de precedencia , los operadores infijos y también pueden ser unarios , para representar números positivos y negativos respectivamente.4 % -3 == -2**5**3 == 1259**0.5 == 3.0@+-
La división entre enteros produce resultados de punto flotante. El comportamiento de la división ha cambiado significativamente con el tiempo: [ 119 ]
- La versión actual de Python (es decir, desde la 3.0) cambió el
/operador para que siempre represente la división de punto flotante, por ejemplo, .5/2==2.5 //Se introdujo el operador de división de piso , lo que significa que7//3 == 2,-7//3 == -3,7.5//3 == 2.0, y-7.5//3 == -3.0. Para Python 2.7, agregar la instrucción permite que un módulo en Python 2.7 utilice las reglas de división de Python 3.x (ver más arriba).from__future__importdivision
En términos de Python, el /operador representa la división verdadera (o simplemente división ), mientras que el //operador representa la división entera. Antes de la versión 3.0, el /operador representa la división clásica . [ 119 ]
El redondeo hacia el infinito negativo, aunque con un método diferente al de la mayoría de los lenguajes, aporta consistencia a Python. Por ejemplo, este redondeo implica que la ecuación siempre es verdadera. Además, el redondeo implica que la ecuación es válida tanto para valores positivos como negativos de . Como era de esperar, el resultado de se encuentra en el intervalo semiabierto [0, b ), donde es un entero positivo; sin embargo, para mantener la validez de la ecuación, el resultado debe estar en el intervalo ( b , 0) cuando es negativo. [ 120 ](a+b)//b==a//b+1b*(a//b)+a%b==aaa%bbb
Python proporciona una roundfunción para redondear un número flotante al entero más cercano. Para desempatar , Python 3 utiliza el método de redondeo al parround(1.5) : y round(2.5)ambos producen 2. [ 121 ] Las versiones de Python anteriores a la 3 utilizaban el método de redondeo alejándose de cero : round(0.5)es 1.0, y round(-0.5)es −1.0. [ 122 ]
Python permite que las expresiones booleanas que contienen múltiples relaciones de igualdad sean consistentes con el uso general en matemáticas. Por ejemplo, la expresión a < b < ccomprueba si aes menor que by bes menor que c. [ 123 ] Los lenguajes derivados de C interpretan esta expresión de manera diferente: en C, la expresión evaluaría primero a < b, resultando en 0 o 1, y ese resultado se compararía luego con c. [ 124 ]
Python utiliza aritmética de precisión arbitraria para todas las operaciones con enteros. El Decimaltipo/clase del decimalmódulo proporciona números decimales de punto flotante con una precisión arbitraria predefinida y varios modos de redondeo. [ 125 ] La Fractionclase del fractionsmódulo proporciona precisión arbitraria para números racionales . [ 126 ]
Debido a la extensa biblioteca matemática de Python y a la biblioteca de terceros NumPy , el lenguaje se utiliza con frecuencia para la creación de scripts científicos en tareas como el procesamiento y la manipulación de datos numéricos. [ 127 ] [ 128 ]
Sintaxis de funciones
En Python, las funciones se crean utilizando la defpalabra clave `function`. Una función se define de forma similar a como se llama, proporcionando primero el nombre de la función y luego los parámetros necesarios. Aquí hay un ejemplo de una función que imprime sus entradas:
def impresora ( entrada1 , entrada2 = "ya está ahí" ): imprimir ( entrada1 ) imprimir ( entrada2 )impresora ( "hola" )# Ejemplo de salida: # hola # ya estoy ahíPara asignar un valor predeterminado a un parámetro de función en caso de que no se proporcione ningún valor real en tiempo de ejecución, se puede utilizar la sintaxis de definición de variables dentro del encabezado de la función.
Ejemplos de código
Programa "¡Hola, mundo!"
imprimir ( '¡Hola, mundo!' )Programa para calcular el factorial de un número entero no negativo:
texto = entrada ( 'Escribe un número y se imprimirá su factorial: ' )n = int ( texto )si n < 0 :Generar ValueError ( 'Debe ingresar un número entero no negativo' )factorial = 1para i en rango ( 2 , n + 1 ):factorial *= iimprimir ( factorial )Bibliotecas
La extensa biblioteca estándar de Python [ 129 ] se cita comúnmente como una de sus mayores fortalezas. Para aplicaciones orientadas a Internet, admite muchos formatos y protocolos estándar como MIME y HTTP . El lenguaje incluye módulos para crear interfaces gráficas de usuario , conectarse a bases de datos relacionales , generar números pseudoaleatorios , realizar aritmética con decimales de precisión arbitraria [ 125 ] , manipular expresiones regulares y realizar 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) wsgirefsigue la PEP 333 [ 130 ] —, pero la mayoría se especifican mediante su código, documentación interna y conjuntos de pruebas . Sin embargo, dado que la mayor parte de la biblioteca estándar es código Python multiplataforma, solo unos pocos módulos deben modificarse o reescribirse para implementaciones variantes.
A fecha de 13 de marzo de 2025 ,El Índice de Paquetes de Python (PyPI), el repositorio oficial para software Python de terceros, contiene más de 614.339 [ 131 ] paquetes.
Entornos de desarrollo
La mayoría de las implementaciones de Python (incluido CPython) incluyen un bucle de lectura-evaluación-impresión (REPL); esto permite que el entorno funcione como un intérprete de línea de comandos , con el que los usuarios introducen instrucciones secuencialmente y reciben resultados inmediatamente. [ 132 ]
Además, CPython viene con un entorno de desarrollo integrado (IDE) llamado IDLE , [ 133 ] que está orientado a principiantes.
Otros intérpretes de comandos, como IDLE e IPython , añaden funcionalidades adicionales como autocompletado mejorado, retención del estado de la sesión y resaltado de sintaxis . [ 133 ] [ 134 ]
Los IDE de escritorio estándar incluyen PyCharm , Spyder y Visual Studio Code ; [ 135 ] existen IDE basados en navegador web , como los siguientes entornos:
- Jupyter Notebooks , una plataforma de computación interactiva de código abierto; [ 136 ]
- PythonAnywhere , un entorno de desarrollo integrado (IDE) y alojamiento basado en navegador; y
- Canopy, un IDE comercial de Enthought que hace hincapié en la computación científica . [ 137 ] [ 138 ]
Implementaciones
Implementación de referencia
CPython es la implementación de referencia de Python. Esta implementación está escrita en C, cumpliendo con el estándar C11 [ 139 ] desde la versión 3.11. Las versiones anteriores utilizan el estándar C89 con algunas características selectas de C99 , pero las extensiones de terceros no se limitan a versiones anteriores de C; por ejemplo, pueden implementarse utilizando C11 o C++. [ 140 ] [ 141 ] CPython compila programas Python en un bytecode intermedio , [ 142 ] que luego es ejecutado por una máquina virtual . [ 143 ] CPython se distribuye con una gran biblioteca estándar escrita en una combinación de C y Python nativo.
CPython está disponible para muchas plataformas, incluyendo Windows y la mayoría de los sistemas modernos tipo Unix , incluyendo macOS (y Macs Apple M1 , desde Python 3.9.1, usando un instalador experimental). A partir de Python 3.9, el instalador de Python falla intencionalmente al instalarse en Windows 7 y 8 ; [ 144 ] [ 145 ] Windows XP fue compatible hasta Python 3.5. Las versiones antiguas de Python admiten extraoficialmente VMS (principalmente [ 146 ] ) y OpenVMS x86-64 tiene soporte para Python 3.10. [ 147 ] [ 148 ] La portabilidad de la plataforma fue una de las primeras prioridades de Python. [ 149 ] Durante el desarrollo de Python 1 y 2, incluso OS/2 y Solaris fueron compatibles; [ 8 ] desde entonces, se ha dejado de dar soporte para muchas plataformas.
Todas las versiones actuales de Python (desde la 3.7) solo son compatibles con sistemas operativos que admiten multihilo , y actualmente no son compatibles con tantos sistemas operativos (dejando de lado muchos obsoletos) como en el pasado.
Limitaciones de la implementación de referencia
- El consumo de energía de Python con CPython para código escrito de forma típica es mucho peor que el de C por un factor de 75,88. [ 150 ]
- El rendimiento de Python con CPython para código escrito de forma típica es peor que el de C por un factor de 71,9. [ 150 ]
- El uso promedio de memoria de CPython para código escrito de forma típica es peor que el de C por un factor de 2,4. [ 150 ]
Otras implementaciones
Todas las implementaciones alternativas presentan semánticas ligeramente diferentes. Por ejemplo, una alternativa puede incluir diccionarios no ordenados , a diferencia de otras versiones actuales de Python. Otro ejemplo dentro del ecosistema de Python es que PyPy no admite la API completa de C.
La creación de un ejecutable con Python a menudo se realiza empaquetando un intérprete de Python completo en el ejecutable, lo que provoca que el tamaño de los binarios sea enorme para programas pequeños, [ 151 ] sin embargo, existen implementaciones que son capaces de compilar Python de verdad. Las implementaciones alternativas incluyen las siguientes:
- PyPy es un intérprete más rápido y compatible de Python 2.7 y 3.11. [ 152 ] [ 153 ] El compilador justo a tiempo de PyPy a menudo mejora significativamente la velocidad en relación con CPython, pero PyPy no admite algunas bibliotecas escritas en C. [ 154 ] PyPy ofrece soporte para la arquitectura del conjunto de instrucciones RISC-V .
- Codon es una implementación con un compilador de compilación anticipada (AOT) , que compila un lenguaje tipo Python de tipado estático cuya "sintaxis y semántica son casi idénticas a las de Python, hay algunas diferencias notables" [ 155 ] Por ejemplo, Codon usa enteros de máquina de 64 bits para la velocidad, no arbitrariamente como con Python; los desarrolladores de Codon afirman que las aceleraciones sobre CPython suelen ser del orden de diez a cien veces. Codon compila a código máquina (a través de LLVM ) y admite multihilo nativo. [ 156 ] Codon también puede compilar a módulos de extensión de Python que se pueden importar y usar desde Python.
- MicroPython y CircuitPython son variantes de Python 3 optimizadas para microcontroladores , incluido el Lego Mindstorms EV3 . [ 157 ]
- Pyston es una variante del entorno de ejecución de Python que utiliza la compilación justo a tiempo para acelerar la ejecución de programas Python. [ 158 ]
- Cinder es una bifurcación de CPython 3.8 orientada al rendimiento que presenta varias optimizaciones, incluyendo almacenamiento en caché en línea de bytecode, evaluación inmediata de corrutinas, un JIT método por método y un compilador de bytecode experimental. [ 159 ]
- El lenguaje de computación embebida Snek [ 160 ] [ 161 ] [ 162 ] "está inspirado en Python, pero no es Python. Es posible escribir programas Snek que se ejecuten bajo un sistema Python completo, pero la mayoría de los programas Python no se ejecutarán bajo Snek." [ 163 ] Snek es compatible con microcontroladores AVR de 8 bits como Arduino basado en ATmega 328P , así como con microcontroladores más grandes que son compatibles con MicroPython . Snek es un lenguaje imperativo que (a diferencia de Python) omite la programación orientada a objetos . Snek admite solo un tipo de dato numérico, que presenta precisión simple de 32 bits (similar a los números de JavaScript , aunque más pequeños).
- RustPython es una implementación escrita en Rust (lenguaje de programación) . Su objetivo es ser compatible con CPython, incluyendo su ABI de C. [ 164 ] Actualmente, se utiliza en GrepTimeDB y Ruff, entre otros proyectos.
Implementaciones no compatibles
Stackless Python es una bifurcación importante de CPython que implementa microhilos . Esta implementación utiliza la pila de llamadas de manera diferente, lo que permite programas masivamente concurrentes. PyPy también ofrece una versión sin pila. [ 165 ]
Se han desarrollado compiladores de Python de compilación justo a tiempo, pero actualmente no cuentan con soporte:
- Google inició un proyecto llamado Unladen Swallow en 2009: este proyecto tenía como objetivo acelerar el intérprete de Python cinco veces mediante el uso de LLVM y mejorar la capacidad de subprocesos múltiples para escalar a miles de núcleos, [ 166 ] mientras que las implementaciones típicas están limitadas por el bloqueo global del intérprete .
- Psyco era un compilador especializado de compilación justo a tiempo (JIT) descontinuado , que se integraba con CPython y transformaba el código de bytes en código máquina en tiempo de ejecución. El código generado estaba especializado para ciertos tipos de datos y era más rápido que el código Python estándar. Psyco no era compatible con Python 2.7 ni versiones posteriores.
- PyS60 era un intérprete de Python 2 para teléfonos móviles de la serie 60 , lanzado por Nokia en 2005. El intérprete implementaba muchos módulos de la biblioteca estándar de Python, así como módulos adicionales para la integración con el sistema operativo Symbian . El Nokia N900 también es compatible con Python a través de la biblioteca de widgets GTK , lo que permite escribir y ejecutar programas en el dispositivo. [ 167 ]
Transpiladores a otros lenguajes
Existen varios compiladores/ transpiladores para lenguajes de objetos de alto nivel; el lenguaje fuente es Python sin restricciones, un subconjunto de Python o un lenguaje similar a Python:
- Brython [ 168 ] y Transcrypt [ 169 ] [ 170 ] compilan Python a JavaScript .
- Cython compila un superconjunto de Python a C. El código resultante se puede utilizar con Python mediante llamadas directas a la API de nivel C en el intérprete de Python.
- PyJL compila/transpila un subconjunto de Python a "código fuente Julia legible, mantenible y de alto rendimiento". [ 80 ] A pesar de las afirmaciones de rendimiento de los desarrolladores, esto no es posible para cualquier código Python; es decir, se sabe que compilar a un lenguaje más rápido o a código máquina es imposible en general. La semántica de Python podría cambiarse, pero en muchos casos es posible acelerar el proceso con pocos o ningún cambio en el código Python. El código fuente Julia más rápido puede entonces usarse desde Python o compilarse a código máquina.
- Nuitka compila Python a C. [ 171 ] Este compilador funciona con Python 3.4 a 3.13 (y 2.6 y 2.7) para las principales plataformas compatibles con Python (y Windows 7 o incluso Windows XP) y para Android. Los desarrolladores del compilador afirman que ofrece soporte completo para Python 3.10, soporte parcial para Python 3.11 y 3.12, y soporte experimental para Python 3.13. Nuitka es compatible con macOS, incluidas las versiones basadas en Apple Silicon. El compilador es gratuito, aunque cuenta con complementos comerciales (por ejemplo, para ocultar el código fuente).
- Numba es un compilador JIT que se utiliza desde Python; este compilador traduce un subconjunto de código Python y NumPy a código máquina rápido. Esta herramienta se habilita añadiendo un decorador al código Python correspondiente.
- Pythran compila un subconjunto de Python 3 a C++ ( C++11 ). [ 172 ]
- RPython se puede compilar a C y se utiliza para construir el intérprete PyPy para Python.
- El transpilador Python → 11l → C++ [ 173 ] compila un subconjunto de Python 3 a C++ ( C++17 ).
También existen compiladores especializados:
- MyHDL es un lenguaje de descripción de hardware (HDL) basado en Python que convierte código MyHDL a código Verilog o VHDL .
Existían algunos proyectos más antiguos, así como compiladores no diseñados para su uso con Python 3.x y su sintaxis relacionada:
- Grumpy de Google transpila Python 2 a Go . [ 174 ] [ 175 ] [ 176 ] La última versión fue en 2017.
- IronPython permite ejecutar programas Python 2.7 con .NET Common Language Runtime . [ 177 ] Una versión alfa (lanzada en 2021) está disponible para "Python 3.4, aunque puede incluir características y comportamientos de versiones posteriores". [ 178 ]
- Jython compila Python 2.7 a bytecode de Java, lo que permite el uso de bibliotecas de Java desde un programa Python. [ 179 ]
- Pyrex (última versión lanzada en 2010) y Shed Skin (última versión lanzada en 2013) se compilan a C y C++ respectivamente.
Actuación
En EuroSciPy '13 se presentó una comparación de rendimiento entre varias implementaciones de Python, utilizando una carga de trabajo no numérica (combinatoria). [ 180 ] Además, el rendimiento de Python en relación con otros lenguajes de programación se evalúa mediante The Computer Language Benchmarks Game . [ 181 ]
Existen varios enfoques para optimizar el rendimiento de Python, a pesar de la lentitud inherente a un lenguaje interpretado . Estos enfoques incluyen las siguientes estrategias o herramientas:
- Compilación justo a tiempo : Compilación dinámica de partes de un programa Python durante la ejecución del programa. Esta técnica se utiliza en bibliotecas como Numba y PyPy .
- Compilación estática : En ocasiones, el código Python se puede compilar a código máquina antes de su ejecución. Un ejemplo de este enfoque es Cython , que compila Python a C.
- Concurrencia y paralelismo : Se pueden ejecutar varias tareas simultáneamente. Python incluye módulos como `multiprocessing` para admitir esta forma de paralelismo. Además, este enfoque ayuda a superar las limitaciones del Bloqueo Global del Intérprete (GIL) en las tareas de la CPU.
- Estructuras de datos eficientes : El rendimiento también se puede mejorar utilizando tipos de datos como
Setpara pruebas de pertenencia odequepara operacionescollectionsde cola . - Se pueden observar mejoras en el rendimiento al utilizar bibliotecas como NumPy . La mayoría de las bibliotecas de Python de alto rendimiento utilizan C o Fortran internamente en lugar del intérprete de Python. [ 182 ]
desarrollo del lenguaje
El desarrollo de Python se lleva a cabo principalmente a través del proceso de Propuestas de Mejora de Python (PEP); este proceso es el mecanismo principal para proponer nuevas características importantes, recopilar comentarios de la comunidad sobre problemas y documentar las decisiones de diseño de Python. [ 183 ] El estilo de codificación de Python se trata en la PEP 8. [ 91 ] Las PEP pendientes son revisadas y comentadas por la comunidad de Python y el consejo directivo. [ 183 ]
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 Roundup alojado por la fundación. [ 184 ] En 2022, todos los problemas y discusiones se migraron a GitHub . [ 185 ] El desarrollo se llevó a cabo originalmente en un repositorio de código fuente autoalojado que ejecutaba Mercurial , hasta que Python se trasladó a GitHub en enero de 2017. [ 186 ]
Las versiones públicas de CPython tienen tres tipos, que se distinguen por la parte del número de versión que se incrementa:
- Versiones incompatibles con versiones anteriores , donde se espera que el código falle y debe portarse manualmente . La primera parte del número de versión se incrementa. Estos lanzamientos ocurren con poca frecuencia: la versión 3.0 se lanzó 8 años después de la 2.0. Según Guido van Rossum, probablemente nunca existirá una versión 4.0. [ 187 ]
- Las versiones principales o de "características" son en gran medida compatibles con la versión anterior, pero introducen nuevas características. La segunda parte del número de versión se incrementa. A partir de Python 3.9, se espera que estas versiones se publiquen anualmente. [ 188 ] [ 189 ] Cada versión principal recibe soporte para correcciones de errores durante varios años después de su lanzamiento. [ 190 ]
- Las versiones de corrección de errores , [ 191 ] que no introducen nuevas características, se publican aproximadamente cada tres meses; estas versiones se realizan cuando se ha corregido un número suficiente de errores en la versión principal desde la última versión. En estas versiones también se corrigen las vulnerabilidades de seguridad. La tercera y última parte del número de versión se incrementa. [ 191 ]
Muchas versiones alfa, beta y candidatas a lanzamiento también se publican como vistas previas y para pruebas antes de los lanzamientos finales. Aunque existe un calendario aproximado para los lanzamientos, estos suelen retrasarse si el código aún no está listo. El equipo de desarrollo de Python supervisa el estado del código ejecutando un amplio conjunto de pruebas unitarias durante el desarrollo. [ 192 ]
La principal conferencia académica sobre Python es PyCon . Además, existen programas especiales de mentoría en Python, como PyLadies .
Nomenclatura
El nombre de Python está inspirado en el grupo cómico británico Monty Python , del que el creador de Python, Guido van Rossum, disfrutaba mientras desarrollaba el lenguaje. Las referencias a Monty Python aparecen con frecuencia en el código y la cultura de Python; [ 193 ] por ejemplo, las variables metasintácticas que se usan a menudo en la literatura de Python son spam y eggs , en lugar de las tradicionales foo y bar . [ 193 ] [ 194 ] Además, la documentación oficial de Python contiene varias referencias a rutinas de Monty Python. [ 195 ] [ 196 ] A los usuarios de Python a veces se les llama "pythonistas". [ 197 ]
Lenguajes influenciados por Python
- Cobra tiene un documento de agradecimientos que enumera a Python en primer lugar entre los lenguajes que influyeron en él. [ 198 ]
- ECMAScript y JavaScript tomaron prestados iteradores y generadores de Python. [ 199 ]
- Go está diseñado para "la velocidad de trabajo en un lenguaje dinámico como Python". [ 200 ]
- Julia fue diseñada para ser "tan útil para la programación general como Python". [ 201 ]
- Mojo es casi [ 34 ] [ 202 ] un superconjunto de Python. [ 203 ]
- GDScript está fuertemente influenciado por Python. [ 204 ]
- Groovy , Boo , CoffeeScript , F# , Nim , Ruby , [ 35 ] Swift , [ 36 ] y V [ 37 ] también han sido influenciados.
Véase también
- Lista de software de aprendizaje automático y aprendizaje profundo para Python
- Lista de libros de programación en Python
- pip (gestor de paquetes)
- Pydoc
- NumPy
- SciPy
- Jupyter
- PyTorch
- Cython
- CPython
- Mojo
- Pygame
- PyQt
- PyGTK
- PyPy
- PyCon
- Google Colab : un entorno de desarrollo integrado (IDE) en línea que no requiere configuración y ejecuta Python.
- Ren'Py
Notas
- ↑ desde 3.5, pero esas sugerencias se ignoran, excepto con herramientas no oficiales [ 5 ]
- ↑
- Nivel 1 : Linux de 64 bits , macOS ; Windows de 64 y 32 bits [ 6 ]
- Nivel 2 : por ejemplo, WebAssembly de 32 bits (WASI)
- Nivel 3 : Android de 64 bits , [ 7 ] iOS , FreeBSD y Raspberry Pi OS (32 bits) No oficial (o se sabe que funciona): Otras variantes tipo Unix / BSD ) y algunas otras plataformas [ 8 ] [ 9 ] [ 10 ]
- ↑ Desde entonces ha salido de su retiro y se autodenomina "BDFL-emérito".
- ↑
delen Python no se comporta de la misma maneradeleteque en lenguajes como C++ , donde dicha palabra se utiliza para llamar al destructor y liberar la memoria del montón.
Referencias
- ↑ "Preguntas frecuentes generales sobre Python – Documentación de Python 3" . docs.python.org . Consultado el 7 de julio de 2024 .
- ↑ "Python 0.9.1 parte 01/21" . Archivos de alt.sources. Archivado del original el 11 de agosto de 2021. Recuperado el 11 de agosto de 2021 .
- ↑ "¡Python 3.14.6 y 3.13.14 ya están disponibles!" . 10 de junio de 2026 . Consultado el 11 de junio de 2026 .
- ↑ "¿Por qué Python es un lenguaje dinámico y también un lenguaje fuertemente tipado?" . Wiki de Python . Archivado del original el 14 de marzo de 2021 . Consultado el 27 de enero de 2021 .
- 1 2 van Rossum, Guido; Levkivskyi, Ivan. "PEP 483 – La teoría de las sugerencias de tipo" . Propuestas de mejora de Python (PEPs) . Archivado del original el 14 de junio de 2020. Recuperado el 14 de junio de 2018 .
- ↑ von Löwis, Martin; Cannon, Brett. "PEP 11 – Soporte de la plataforma CPython" . Propuestas de mejora de Python (PEPs) . Consultado el 22 de abril de 2024 .
- ↑ "PEP 738 – Agregar Android como plataforma compatible | peps.python.org" . Propuestas de mejora de Python (PEPs) . Consultado el 19 de mayo de 2024 .
- 1 2 "Descargar Python para otras plataformas" . Python.org . Archivado del original el 27 de noviembre de 2020. Consultado el 18 de agosto de 2023 .
- ↑ "test – Paquete de pruebas de regresión para Python" . Documentación de Python 3.7.17 . Archivado del original el 17 de mayo de 2022. Consultado el 17 de mayo de 2022 .
- ↑ "plataforma – Acceso a los datos de identificación de la plataforma subyacente" . Documentación de Python 3.10.4 . Archivado del original el 17 de mayo de 2022. Consultado el 17 de mayo de 2022 .
- 1 2 3 Venners, Bill (13 de enero de 2003). "The Making of Python" . Artima Developer . Artima. Archivado del original el 1 de septiembre de 2016. Recuperado el 22 de marzo de 2007 .
- ↑ Cannon, Brett (20 de febrero de 2015). "PEP 488 – Eliminación de archivos PYO" . Propuestas de mejora de Python (PEPs) . Archivado del original el 16 de enero de 2026. Consultado el 28 de febrero de 2026.
Un archivo PYC es el archivo de código de bytes generado y leído cuando no se especifica ningún nivel de optimización al iniciar el intérprete [...]
.pyc - ↑ Ahlstrom, James C. (11 de octubre de 2001). "PEP 273 – Importar módulos desde archivos Zip" . Propuestas de mejora de Python (PEPs) . Archivado del original el 25 de febrero de 2026. Recuperado el 28 de febrero de 2026.
Los módulos dinámicos tienen extensiones como
,
, y
.
.dll.pyd.so - ↑ Harper Smith, Emma (9 de septiembre de 2017). "PEP 561 – Distribución y empaquetado de información de tipo" . Propuestas de mejora de Python (PEPs) . Archivado del original el 7 de diciembre de 2025. Recuperado el 28 de febrero de 2026 .
'stubs': archivos que contienen únicamente información de tipo, vacíos de código de tiempo de ejecución (el nombre del archivo termina en
.pyi). - ↑ Hammond, Mark; von Löwis, Martin (15 de marzo de 2011). "PEP 397 – Lanzador de Python para Windows" . Propuestas de mejora de Python (PEPs) . Archivado del original el 4 de febrero de 2026. Recuperado el 28 de febrero de 2026.
[...] la versión de 'consola' del lanzador está asociada con archivos .py y la versión de 'Windows' está asociada con archivos .pyw.
- ↑ Holth, Daniel; Moore, Paul (30 de marzo de 2013). "PEP 0441 – Mejora del soporte de aplicaciones ZIP en Python" . Propuestas de mejora de Python (PEPs) . Archivado del original el 16 de noviembre de 2015. Consultado el 12 de noviembre de 2015 .
- ↑ "Lenguaje Starlark" . bazel.build . Archivado del original el 15 de junio de 2020. Recuperado el 25 de mayo de 2019 .
- 1 2 "¿Por qué se creó Python en primer lugar?" . Preguntas frecuentes generales sobre Python . Fundación de Software Python. Archivado del original el 24 de octubre de 2012 . Recuperado el 22 de marzo de 2007 .
Tenía una amplia experiencia en la implementación de un lenguaje interpretado en el grupo ABC de CWI, y trabajando con este grupo aprendí mucho sobre el diseño de lenguajes. Este es el origen de muchas características de Python, incluido el uso de la indentación para agrupar sentencias y la inclusión de tipos de datos de muy alto nivel (aunque los detalles son todos diferentes en Python).
- ↑ "Manual de referencia de Ada 83 (declaración de elevación)" . archive.adaic.com . Archivado del original el 22 de octubre de 2019. Consultado el 7 de enero de 2020 .
- 1 2 Kuchling, Andrew M. (22 de diciembre de 2006). "Entrevista con Guido van Rossum (julio de 1998)" . amk.ca. Archivado del original el 1 de mayo de 2007. Recuperado el 12 de marzo de 2012.
Pasé un verano en el Centro de Investigación de Sistemas de DEC, donde conocí Modula-2+; el informe final de Modula-3 se estaba escribiendo allí casi al mismo tiempo. Lo que aprendí allí apareció más tarde en el manejo de excepciones de Python, los módulos y el hecho de que los métodos contienen explícitamente 'self' en su lista de parámetros. El seccionamiento de cadenas provino de Algol-68 e Icon.
- 123"itertools – Functions creating iterators for efficient looping". Python 3.7.17 documentation. Archived from the original on 14 June 2020. Retrieved 22 November 2016.
This module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML.
- ↑van Rossum, Guido (1993). "An Introduction to Python for UNIX/C Programmers". Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group). CiteSeerX 10.1.1.38.2023.
even though the design of C is far from ideal, its influence on Python is considerable.
- 12"Classes". The Python Tutorial. Python Software Foundation. Archived from the original on 23 October 2012. Retrieved 20 February 2012.
It is a mixture of the class mechanisms found in C++ and Modula-3
- ↑Lundh, Fredrik. "Call By Object". effbot.org. Archived from the original on 23 November 2019. Retrieved 21 November 2017.
replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model.
- ↑Simionato, Michele. "The Python 2.3 Method Resolution Order". Python Software Foundation. Archived from the original on 20 August 2020. Retrieved 29 July 2014.
The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers
- ↑Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 9 February 2012.
List comprehensions and generator expressions [...] are a concise notation for such operations, borrowed from the functional programming language Haskell.
- ↑Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). "PEP 255 – Simple Generators". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 9 February 2012.
- ↑ "Más herramientas de control de flujo" . Documentación de Python 3. Python Software Foundation. Archivado del original el 4 de junio de 2016. Recuperado el 24 de julio de 2015.
Debido a la demanda popular, se han añadido a Python algunas características comunes en lenguajes de programación funcional como Lisp. Con la palabra clave lambda, se pueden crear pequeñas funciones anónimas.
- ↑ "re – Operaciones con expresiones regulares" . Documentación de Python 3.10.6 . Archivado del original el 18 de julio de 2018. Consultado el 6 de septiembre de 2022.
Este módulo proporciona operaciones de coincidencia de expresiones regulares similares a las que se encuentran en Perl.
- ↑ "CoffeeScript" . coffeescript.org . Archivado del original el 12 de junio de 2020. Consultado el 3 de julio de 2018 .
- ↑ Rauschmayer, Axel (24 de febrero de 2013). "Influencias de Perl y Python en JavaScript" . 2ality.com . Archivado del original el 26 de diciembre de 2018. Recuperado el 15 de mayo de 2015 .
- ↑ Rauschmayer, Axel. "Capítulo 3: La naturaleza de JavaScript; influencias" . Speaking JavaScript . O'Reilly. Archivado del original el 26 de diciembre de 2018. Recuperado el 15 de mayo de 2015 .
- ↑ Bezanson, Jeff; Karpinski, Stefan; Shah, Viral B.; Edelman, Alan (febrero de 2012). "Por qué creamos Julia" . Sitio web de Julia . Archivado del original el 2 de mayo de 2020. Recuperado el 5 de junio de 2014.
Queremos algo tan útil para la programación general como Python [...]
- 1 2 Krill, Paul (4 de mayo de 2023). "El lenguaje Mojo combina Python y MLIR para el desarrollo de IA" . InfoWorld . Archivado del original el 5 de mayo de 2023. Recuperado el 5 de mayo de 2023 .
- 1 2 Bini, Ola (2007). Proyectos prácticos de JRuby on Rails Web 2.0: llevando Ruby on Rails a la plataforma Java . Berkeley: APress. pág . 3. ISBN 978-1-59059-881-8.
- 1 2 Lattner, Chris (3 de junio de 2014). "Página web de Chris Lattner" . Chris Lattner. Archivado del original el 25 de diciembre de 2018. Recuperado el 3 de junio de 2014.
El lenguaje Swift es el producto del esfuerzo incansable de un equipo de expertos en lenguajes, gurús de la documentación, ninjas de la optimización de compiladores y un grupo interno de dogfood increíblemente importante que proporcionó retroalimentación para ayudar a refinar y probar ideas en batalla. Por supuesto, también se benefició enormemente de las experiencias ganadas con esfuerzo por muchos otros lenguajes en el campo, tomando ideas de Objective-C, Rust, Haskell, Ruby, Python, C#, CLU y demasiados otros para enumerar.
- 1 2 "Documentación V (Introducción)" . GitHub . Consultado el 24 de diciembre de 2024 .
- ↑ Kuhlman, Dave. "Un libro de Python: Python para principiantes, Python avanzado y ejercicios de Python" . Sección 1.1. Archivado del original (PDF) el 23 de junio de 2012.
- ↑ "PEP 484 – Sugerencias de tipo" . Propuestas de mejora de Python . Consultado el 27 de octubre de 2025 .
- ↑ "mypy – Tipado estático opcional para Python" . mypy-lang.org . Consultado el 17 de agosto de 2025 .
- ↑ "Novedades de Python 3.15" . Consultado el 26 de enero de 2026 .
- ↑ "Encuesta para desarrolladores de Stack Overflow 2022" . Stack Overflow . Archivado del original el 27 de junio de 2022. Consultado el 12 de agosto de 2022 .
- ↑ "Infografía sobre el estado del ecosistema de desarrolladores en 2020" . JetBrains . Archivado del original el 1 de marzo de 2021. Consultado el 5 de marzo de 2021 .
- ↑ "Índice TIOBE" . TIOBE. Archivado del original el 25 de febrero de 2018. Consultado el 3 de enero de 2023.
El índice de la comunidad de programación TIOBE es un indicador de la popularidad de los lenguajes de programación
.Actualizado según sea necesario. - ↑ Healy, John; McInnes, Leland; Weir, Colin (2017). «Superando la brecha del análisis cibernético: la democratización de la ciencia de datos». The Cyber Defense Review . 2 (1): 109– 118. ISSN 2474-2120 . JSTOR 26267404.
Python es la lengua franca de la ciencia de datos y el aprendizaje automático.
- ↑ Sultana, Simon G.; Reed, Philip A. (2017). "Currículo para un curso introductorio de informática: identificación de recomendaciones de la academia y la industria". The Journal of Technology Studies . 43 (2): 80– 92. doi : 10.21061/jots.v43i2.a.3 . ISSN 1071-6084 . JSTOR 90023144 .
- ↑ "Índice TIOBE" . TIOBE. Archivado del original el 25 de febrero de 2018. Consultado el 3 de enero de 2023.
El índice de la comunidad de programación TIOBE es un indicador de la popularidad de los lenguajes de programación
. - 1 2 3 van Rossum, Guido (20 de enero de 2009). "Una breve cronología de Python" . La historia de Python . Archivado del original el 5 de junio de 2020. Recuperado el 20 de enero de 2009 .
- ↑ van Rossum, Guido (29 de agosto de 2000). "SETL (era: tibio acerca de los literales de rango)" . Python-Dev (lista de correo). Archivado del original el 14 de julio de 2018. Recuperado el 13 de marzo de 2011 .
- ↑ Fairchild, Carlie (12 de julio de 2018). "Guido van Rossum renuncia a su cargo como dictador benevolente de Python de por vida" . Linux Journal . Archivado del original el 13 de julio de 2018. Recuperado el 13 de julio de 2018 .
- ↑ Smith, Nathaniel J.; Durbin, Ee. "PEP 8100 – Elección del Consejo Directivo de enero de 2019" . Python Enhancement Proposals (PEPs) . Python Software Foundation. Archivado del original el 4 de junio de 2020. Recuperado el 4 de mayo de 2019 .
- ↑ El equipo central y la comunidad de Python. "PEP 13 – Gobernanza del lenguaje Python" . Propuestas de mejora de Python (PEP) . Archivado del original el 27 de mayo de 2021. Consultado el 25 de agosto de 2021 .
- ^ Briggs, Jason R.; Lipovača, Miran (2013). Python para niños: una divertida introducción a la programación . San Francisco, California, EE.UU.: No Starch Press. ISBN 978-1-59327-407-8. LCCN 2012044047 . OCLC 825076499 . OL 26119645M .
- ↑ Kuchling, AM; Zadka, Moshe (16 de octubre de 2000). "Novedades de Python 2.0" . Python Software Foundation. Archivado del original el 23 de octubre de 2012. Consultado el 11 de febrero de 2012 .
- ↑ Peterson, Benjamin. "PEP 373 – Calendario de lanzamiento de Python 2.7" . python.org . Archivado del original el 19 de mayo de 2020. Consultado el 9 de enero de 2017 .
- ↑ Coghlan, Alyssa. "PEP 466 – Mejoras de seguridad de red para Python 2.7.x" . Propuestas de mejora de Python (PEP) . Archivado del original el 4 de junio de 2020. Recuperado el 9 de enero de 2017 .
- ↑ "Descontinuación de Python 2" . Python.org . Archivado del original el 12 de enero de 2020. Consultado el 22 de septiembre de 2019 .
- ↑ Peterson, Benjamin. "PEP 373 – Calendario de lanzamiento de Python 2.7" . Propuestas de mejora de Python (PEPs) . Archivado del original el 13 de enero de 2020. Consultado el 22 de septiembre de 2019 .
- ↑ mattip (25 de diciembre de 2023). "Lanzamiento de PyPy v7.3.14" . PyPy . Archivado desde el original el 5 de enero de 2024 . Consultado el 5 de enero de 2024 .
- ↑ Peterson, Benjamin (20 de abril de 2020). "Python 2.7.18, la última versión de Python 2" . Python Insider . Archivado del original el 26 de abril de 2020. Consultado el 27 de abril de 2020 .
- ↑ "Estado de las versiones de Python" . Guía del desarrollador de Python . Consultado el 12 de noviembre de 2025 .
- ↑ The Cain Gang Ltd. "Metaclases de Python: ¿Quiénes? ¿Por qué? ¿Cuándo?" (PDF) . Archivado del original (PDF) el 30 de mayo de 2009. Consultado el 27 de junio de 2009 .
- ↑ "3.3. Nombres de métodos especiales" . The Python Language Reference . Python Software Foundation. Archivado del original el 15 de diciembre de 2018. Consultado el 27 de junio de 2009 .
- ↑ "PyDBC: precondiciones de métodos, postcondiciones de métodos e invariantes de clase para Python" . Archivado del original el 23 de noviembre de 2019. Recuperado el 24 de septiembre de 2011 .
- ↑ "Contratos para Python" . Archivado del original el 15 de junio de 2020. Consultado el 24 de septiembre de 2011 .
- ↑ "PyDatalog" . Archivado del original el 13 de junio de 2020. Consultado el 22 de julio de 2012 .
- ↑ "Pégalo todo con Python" . Python.org . Consultado el 30 de septiembre de 2024 .
- ↑ "Recuentos de referencias" . Extendiendo e integrando el intérprete de Python. Docs.python.org . Archivado del original el 18 de octubre de 2012. Recuperado el 5 de junio de 2020.
Dado que Python hace un uso intensivo de
y
, necesita una estrategia para evitar fugas de memoria, así como la reutilización de la memoria liberada. El método elegido se llama
conteo de referencias
.
malloc()free()} - 1 2 Hettinger, Raymond (30 de enero de 2002). "PEP 289 – Expresiones generadoras" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 14 de junio de 2020. Recuperado el 19 de febrero de 2012 .
- ↑ "6.5 itertools – Funciones que crean iteradores para bucles eficientes" . Docs.python.org. Archivado del original el 14 de junio de 2020. Consultado el 22 de noviembre de 2016 .
- 1 2 Peters, Tim (19 de agosto de 2004). "PEP 20 – El Zen de Python" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 26 de diciembre de 2018. Recuperado el 24 de noviembre de 2008 .
- ↑ Lutz, Mark (enero de 2022). "Cambios en Python a partir de 2014" . Learning Python . Archivado del original el 15 de marzo de 2024. Consultado el 25 de febrero de 2024 .
- ↑ "Confusión respecto a una regla en 'El Zen de Python'"" . Discusiones. Python.org . Ayuda de Python. 3 de mayo de 2022. Archivado del original el 25 de febrero de 2024 . Consultado el 25 de febrero de 2024 .
- ↑ Ambi, Chetan (4 de julio de 2021). "El operador 'morsa' más controvertido de Python"Python simplificado (pythonsimplified.com) . Archivado del original el 27 de agosto de 2023. Consultado el 5 de febrero de 2024 .
- ↑ Grifski, Jeremy (24 de mayo de 2020). "La controversia en torno al 'operador morsa' en Python" . The Renegade Coder (therenegadecoder.com) . Archivado del original el 28 de diciembre de 2023. Recuperado el 25 de febrero de 2024 .
- ^ van Kemenade, Hugo (2 de junio de 2026). "¡Python 3.15.0 beta 2 ya está aquí!" . Información privilegiada de Python . Consultado el 18 de junio de 2026 .
- ↑ Bader, Dan. "Mejores prácticas para el formato de cadenas en Python" . Real Python (realpython.com) . Archivado del original el 18 de febrero de 2024. Consultado el 25 de febrero de 2024 .
- ↑ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2.ª edición . O'Reilly Media . pág. 230. ISBN 978-0-596-00797-3Archivado del original el 23 de febrero de 2020. Consultado el 14 de noviembre de 2015 .
- ↑ "Cultura Python" . ebeab . 21 de enero de 2014. Archivado del original el 30 de enero de 2014.
- 1 2 "Transpilación de Python a Julia usando PyJL" (PDF) . Archivado (PDF) del original el 19 de noviembre de 2023. Recuperado el 20 de septiembre de 2023.
Después de modificar manualmente una línea de código especificando la información de tipo necesaria, obtuvimos una aceleración de 52,6×, lo que hace que el código Julia traducido sea 19,5× más rápido que el código Python original.
- 1 2 "15 maneras en que Python es una fuerza poderosa en la web" . Archivado del original el 11 de mayo de 2019. Recuperado el 3 de julio de 2018 .
- ↑ "¿Por qué se llama Python?" . Preguntas frecuentes generales sobre Python . Docs.python.org. Archivado del original el 24 de octubre de 2012 . Consultado el 3 de enero de 2023 .
- ↑ " – formateador de datos – documentación de Python 3.11.0 " . docs.python.org . Archivado del original el 22 de enero de 2021 . Consultado el 5 de noviembre de 2022 .
pprintstuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni'] - ↑ "Estilo de código" . La guía del autoestopista para Python. docs.python-guide.org . Archivado del original el 27 de enero de 2021. Consultado el 20 de enero de 2021 .
- 1 2 3 Varsovia, Berry; Hylton, Jeremy; Goodder, David (13 de junio de 2000). "PEP 1 – Propósito y directrices de PEP" . peps.python.org . Recuperado el 6 de mayo de 2026 .
- 1 2 "Propuesta de mejora de Python (PEP)" . Consultado el 6 de mayo de 2026 .
- 1 2 3 "¿Qué es un PEP en Python?" . believemy.com . Consultado el 7 de mayo de 2026 .
- ↑ "¿Es Python un buen lenguaje para programadores principiantes?" . Preguntas frecuentes generales sobre Python . Fundación de Software Python. Archivado del original el 24 de octubre de 2012 . Consultado el 21 de marzo de 2007 .
- ↑ "Mitos sobre la indentación en Python" . Secnetix.de. Archivado del original el 18 de febrero de 2018. Consultado el 19 de abril de 2011 .
- ↑ Guttag, John V. (12 de agosto de 2016). Introducción a la computación y la programación con Python: con aplicaciones para la comprensión de datos . MIT Press. ISBN 978-0-262-52962-4.
- 1 2 van Rossum, Guido; Warsaw, Barry. "PEP 8 – Guía de estilo para código Python" . Propuestas de mejora de Python (PEPs) . Archivado del original el 17 de abril de 2019. Recuperado el 26 de marzo de 2019 .
- ↑ "8. Errores y excepciones – Documentación de Python 3.12.0a0" . docs.python.org . Archivado del original el 9 de mayo de 2022. Consultado el 9 de mayo de 2022 .
- ↑ "Aspectos destacados: Python 2.5" . Python.org . Archivado del original el 4 de agosto de 2019. Consultado el 20 de marzo de 2018 .
- ↑ "Novedades de Python 3.15" . Documentación de Python . Consultado el 30 de abril de 2026 .
- ↑ van Rossum, Guido (22 de abril de 2009). "Eliminación de recursión de cola" . Neopythonic.blogspot.be. Archivado del original el 19 de mayo de 2018. Recuperado el 3 de diciembre de 2012 .
- ↑ van Rossum, Guido (9 de febrero de 2006). "El diseño de lenguajes no es solo resolver rompecabezas" . Foros de Artima . Artima. Archivado del original el 17 de enero de 2020. Recuperado el 21 de marzo de 2007 .
- ↑ van Rossum, Guido; Eby, Phillip J. (10 de mayo de 2005). "PEP 342 – Coroutines via Enhanced Generators" . Python Enhancement Proposals . Python Software Foundation. Archivado del original el 29 de mayo de 2020. Recuperado el 19 de febrero de 2012 .
- ↑ "PEP 380" . Python.org. Archivado del original el 4 de junio de 2020. Consultado el 3 de diciembre de 2012 .
- ↑ "división" . python.org . Archivado del original el 20 de julio de 2006. Consultado el 30 de julio de 2014 .
- ↑ "PEP 0465 – Un operador infijo dedicado para la multiplicación de matrices" . python.org . Archivado del original el 4 de junio de 2020. Consultado el 1 de enero de 2016 .
- ↑ "Python 3.5.1 Release and Changelog" . python.org . Archivado del original el 14 de mayo de 2020. Consultado el 1 de enero de 2016 .
- ↑ "Novedades de Python 3.8" . Archivado del original el 8 de junio de 2020. Consultado el 14 de octubre de 2019 .
- ↑ van Rossum, Guido; Hettinger, Raymond (7 de febrero de 2003). "PEP 308 – Expresiones condicionales" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 13 de marzo de 2016. Recuperado el 13 de julio de 2011 .
- ↑ "4. Tipos integrados – Documentación de Python 3.6.3rc1" . python.org . Archivado del original el 14 de junio de 2020. Consultado el 1 de octubre de 2017 .
- ↑ "5.3. Tuplas y secuencias – Documentación de Python 3.7.1rc2" . python.org . Archivado del original el 10 de junio de 2020. Consultado el 17 de octubre de 2018 .
- 1 2 "PEP 498 – Interpolación de cadenas literales" . python.org . Archivado del original el 15 de junio de 2020. Recuperado el 8 de marzo de 2017 .
- ↑ "The Python Language Reference, sección 3.3. New-style and classic classes, for release 2.7.1" . Archivado del original el 26 de octubre de 2012. Consultado el 12 de enero de 2011 .
- ↑ "PEP 484 – Sugerencias de tipos | peps.python.org" . peps.python.org . Archivado del original el 27 de noviembre de 2023. Consultado el 29 de noviembre de 2023 .
- ↑ "typing — Soporte para sugerencias de tipo" . Documentación de Python . Python Software Foundation. Archivado del original el 21 de febrero de 2020. Consultado el 22 de diciembre de 2023 .
- ↑ "mypy – Tipado estático opcional para Python" . Archivado del original el 6 de junio de 2020. Consultado el 28 de enero de 2017 .
- ↑ "Introducción" . mypyc.readthedocs.io . Archivado del original el 22 de diciembre de 2023. Consultado el 22 de diciembre de 2023 .
- ↑ "¿En qué sistemas Python no utiliza números de coma flotante de doble precisión IEEE-754?" . Stack Overflow . Consultado el 7 de junio de 2026 .
- ↑ "15. Aritmética de punto flotante: problemas y limitaciones – documentación de Python 3.8.3" . docs.python.org . Archivado del original el 6 de junio de 2020. Recuperado el 6 de junio de 2020.
Casi todas las máquinas actuales (noviembre de 2000) utilizan aritmética de punto flotante IEEE-754, y casi todas las plataformas asignan los números flotantes de Python a la "doble precisión" IEEE-754.
- ↑ "ArrowNotImplementedError: error halffloat al aplicar pandas.to_feather en un dataframe" . Stack Overflow . Consultado el 8 de junio de 2026 .
- ↑ "Formatos de punto flotante exóticos: documentación de bitstring 4.3" . bitstring.readthedocs.io . Consultado el 8 de junio de 2026 .
- ↑ Zadka, Moshe; van Rossum, Guido (11 de marzo de 2001). "PEP 237 – Unificación de enteros largos y enteros" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 28 de mayo de 2020. Recuperado el 24 de septiembre de 2011 .
- ↑ "Tipos integrados" . Archivado del original el 14 de junio de 2020. Consultado el 3 de octubre de 2019 .
- ↑ "PEP 465 – Un operador infijo dedicado para la multiplicación de matrices" . python.org . Archivado del original el 29 de mayo de 2020. Recuperado el 3 de julio de 2018 .
- 1 2 Zadka, Moshe; van Rossum, Guido (11 de marzo de 2001). "PEP 238 – Cambio del operador de división" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 28 de mayo de 2020. Recuperado el 23 de octubre de 2013 .
- ↑ "Por qué Python realiza redondeos a cero en la división de enteros" . 24 de agosto de 2010. Archivado del original el 5 de junio de 2020. Consultado el 25 de agosto de 2010 .
- ↑ "round" , La biblioteca estándar de Python, versión 3.2, §2: Funciones integradas , archivado del original el 25 de octubre de 2012 , recuperado el 14 de agosto de 2011
- ↑ "round" , La biblioteca estándar de Python, versión 2.7, §2: Funciones integradas , archivado del original el 27 de octubre de 2012 , recuperado el 14 de agosto de 2011
- ↑ Beazley, David M. (2009). Python Essential Reference (4.ª ed.). Addison-Wesley Professional. pág . 66. ISBN 978-0-672-32978-4.
- ↑ Kernighan, Brian W.; Ritchie, Dennis M. (1988). El lenguaje de programación C (2.ª ed.). pág. 206 .
- 1 2 Batista, Facundo (17 de octubre de 2003). "PEP 327 – Tipo de datos decimal" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 4 de junio de 2020. Recuperado el 24 de noviembre de 2008 .
- ↑ "Novedades de Python 2.6" . Documentación de Python v2.6.9 . 29 de octubre de 2013. Archivado del original el 23 de diciembre de 2019. Consultado el 26 de septiembre de 2015 .
- ↑ "10 razones por las que Python es genial para la investigación (y algunas razones por las que no lo es) – Hoyt Koepke" . Departamento de Estadística de la Universidad de Washington . Archivado del original el 31 de mayo de 2020. Consultado el 3 de febrero de 2019 .
- ↑ Shell, Scott (17 de junio de 2014). "Una introducción a Python para la computación científica" (PDF) . Archivado (PDF) del original el 4 de febrero de 2019. Recuperado el 3 de febrero de 2019 .
- ↑ Piotrowski, Przemyslaw (julio de 2006). "Crea un entorno de desarrollo web rápido para Python Server Pages y Oracle" . Oracle Technology Network . Oracle. Archivado del original el 2 de abril de 2019. Recuperado el 12 de marzo de 2012 .
- ↑ Eby, Phillip J. (7 de diciembre de 2003). "PEP 333 – Python Web Server Gateway Interface v1.0" . Python Enhancement Proposals . Python Software Foundation. Archivado del original el 14 de junio de 2020. Recuperado el 19 de febrero de 2012 .
- ↑ "PyPI" . PyPI . 13 de marzo de 2025. Archivado del original el 22 de febrero de 2025.
- ↑ "Glosario: interactivo" . Documentación de Python . v3.13.7 . Consultado el 31 de agosto de 2025 .
- 1 2 "IDLE — Editor y shell de Python" . Documentación de Python . v3.13.7 . Consultado el 31 de agosto de 2025.
IDLE es el Entorno Integrado de Desarrollo y Aprendizaje de Python.
- ↑ "Documentación de IPython" . v9.5.0. 29 de agosto de 2025. Archivado del original el 31 de agosto de 2025. Consultado el 31 de agosto de 2025 .
- ↑ "Python en Visual Studio Code" . code.visualstudio.com . Consultado el 1 de diciembre de 2025 .
- ↑ "Proyecto Jupyter" . Jupyter.org . Archivado del original el 12 de octubre de 2023. Consultado el 2 de abril de 2025 .
- ↑ Harper, Doug (Primavera de 2024). "Enthought Canopy" . Física 316 de WKU . Western Kentucky University . Archivado del original el 18 de agosto de 2024. Recuperado el 31 de agosto de 2025 .
- ↑ "Enthought Canopy" . Enthought . Archivado del original el 15 de julio de 2017. Consultado el 20 de agosto de 2016 .
- ↑ "PEP 7 – Guía de estilo para código C | peps.python.org" . peps.python.org . Archivado del original el 24 de abril de 2022. Consultado el 28 de abril de 2022 .
- ↑ "4. Creación de extensiones de C y C++ – Documentación de Python 3.9.2" . docs.python.org . Archivado del original el 3 de marzo de 2021. Consultado el 1 de marzo de 2021 .
- ↑ van Rossum, Guido (5 de junio de 2001). "PEP 7 – Guía de estilo para código C" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 1 de junio de 2020. Recuperado el 24 de noviembre de 2008 .
- ↑ "Código de bytes de CPython" . Docs.python.org. Archivado del original el 5 de junio de 2020. Consultado el 16 de febrero de 2016 .
- ↑ "Python 2.5 internals" (PDF) . Archivado (PDF) del original el 6 de agosto de 2012. Recuperado el 19 de abril de 2011 .
- ↑ "Registro de cambios – Documentación de Python 3.9.0" . docs.python.org . Archivado del original el 7 de febrero de 2021. Consultado el 8 de febrero de 2021 .
- ↑ "Descargar Python" . Python.org . Archivado del original el 8 de diciembre de 2020. Consultado el 13 de diciembre de 2020 .
- ↑ "Problemas de compatibilidad de VMS con Python - Wiki de VSI OpenVMS" . wiki.vmssoftware.com . Consultado el 8 de junio de 2026 .
- ↑ "Python y Python Wheels para OpenVMS — VMS Software, Inc." . docs.vmssoftware.com . Consultado el 8 de junio de 2026 .
- ↑ "historial [ vmspython ] " . www.vmspython.org . Archivado del original el 2 de diciembre de 2020 . Recuperado el 4 de diciembre de 2020 .
- ↑ "Entrevista con Guido van Rossum" . Oreilly.com. Archivado del original el 16 de julio de 2014. Consultado el 24 de noviembre de 2008 .
- 1 2 3 Pereira, Rui; Couto, Marco; Ribeiro, Francisco; Rúa, Rui; Cunha, Jácome; Fernandes, João Paulo; Saraiva, João (23 de octubre de 2017). "Eficiencia energética en lenguajes de programación: ¿Cómo se relacionan la energía, el tiempo y la memoria?" . Actas de la décima conferencia internacional ACM SIGPLAN sobre ingeniería de lenguajes de software . SLE 2017. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 256–267 . doi : 10.1145/3136014.3136031 . ISBN 978-1-4503-5525-4.
- ↑ "Qué hace PyInstaller y cómo lo hace" .
- ↑ "Compatibilidad con PyPy" . Pypy.org. Archivado del original el 6 de junio de 2020. Consultado el 3 de diciembre de 2012 .
- ↑ Equipo, The PyPy (28 de diciembre de 2019). "Descargar e instalar" . PyPy . Archivado del original el 8 de enero de 2022. Recuperado el 8 de enero de 2022 .
- ↑ "comparación de velocidad entre CPython y Pypy" . Speed.pypy.org. Archivado del original el 10 de mayo de 2021. Consultado el 3 de diciembre de 2012 .
- ↑ "Codon: Diferencias con Python" . Archivado del original el 25 de mayo de 2023. Consultado el 28 de agosto de 2023 .
- ↑ Lawson, Loraine (14 de marzo de 2023). "Compilador creado por el MIT acelera el código Python" . The New Stack . Archivado del original el 6 de abril de 2023. Consultado el 28 de agosto de 2023 .
- ↑ "Python-for-EV3" . LEGO Education . Archivado del original el 7 de junio de 2020. Consultado el 17 de abril de 2019 .
- ↑ Yegulalp, Serdar (29 de octubre de 2020). "Pyston regresa de entre los muertos para acelerar Python" . InfoWorld . Archivado del original el 27 de enero de 2021. Consultado el 26 de enero de 2021 .
- ↑ "cinder: bifurcación de CPython orientada al rendimiento de Instagram" . GitHub . Archivado del original el 4 de mayo de 2021. Consultado el 4 de mayo de 2021 .
- ↑ Aroca, Rafael (7 de agosto de 2021). "Snek Lang: se siente como Python en Arduinos" . Yet Another Technology Blog . Archivado del original el 5 de enero de 2024. Recuperado el 4 de enero de 2024 .
- ↑ Aufranc (CNXSoft), Jean-Luc (16 de enero de 2020). "Snekboard controla las funciones de LEGO Power Functions con CircuitPython o los lenguajes de programación Snek (financiación colectiva) – CNX Software" . CNX Software – Noticias de sistemas embebidos . Archivado del original el 5 de enero de 2024. Consultado el 4 de enero de 2024 .
- ↑ Kennedy (@mkennedy), Michael. "¿Listo para descubrir si eres famoso en Git?" . pythonbytes.fm . Archivado del original el 5 de enero de 2024 . Recuperado el 4 de enero de 2024 .
- ↑ Packard, Keith (20 de diciembre de 2022). "El lenguaje de programación Snek: un lenguaje de computación embebida inspirado en Python" (PDF) . Archivado (PDF) del original el 4 de enero de 2024. Recuperado el 4 de enero de 2024 .
- ↑ RustPython/RustPython , RustPython Dev, 5 de mayo de 2026 , consultado el 6 de mayo de 2026
- ↑ "Funcionalidades de Stackless a nivel de aplicación: documentación de PyPy 2.0.2" . Doc.pypy.org. Archivado del original el 4 de junio de 2020. Consultado el 17 de julio de 2013 .
- ↑ "Planes para optimizar Python" . Google Project Hosting . 15 de diciembre de 2009. Archivado del original el 11 de abril de 2016. Consultado el 24 de septiembre de 2011 .
- ↑ "Python en el Nokia N900" . Geometría estocástica . 29 de abril de 2010. Archivado del original el 20 de junio de 2019. Consultado el 9 de julio de 2015 .
- ↑ "Brython" . brython.info . Archivado del original el 3 de agosto de 2018. Consultado el 21 de enero de 2021 .
- ↑ "Transcrypt – Python en el navegador" . transcrypt.org . Archivado del original el 19 de agosto de 2018. Consultado el 22 de diciembre de 2020 .
- ↑ "Transcrypt: Anatomía de un compilador de Python a JavaScript" . InfoQ . Archivado del original el 5 de diciembre de 2020. Consultado el 20 de enero de 2021 .
- ↑ "Nuitka Home | Nuitka Home" . nuitka.net . Archivado del original el 30 de mayo de 2020. Consultado el 18 de agosto de 2017 .
- ↑ Guelton, Serge; Brunet, Pierrick; Amini, Mehdi; Merlini, Adrien; Corbillon, Xavier; Raynaud, Alan (16 de marzo de 2015). "Pythran: habilitando la optimización estática de programas científicos en Python" . Computational Science & Discovery . 8 (1) 014001. IOP Publishing. Bibcode : 2015CS & D....8a4001G . doi : 10.1088/1749-4680/8/1/014001 . ISSN 1749-4699 .
- ↑ "El transpilador de Python → 11l → C++" . Archivado del original el 24 de septiembre de 2022. Consultado el 17 de julio de 2022 .
- ↑ "google/grumpy" . 10 de abril de 2020. Archivado del original el 15 de abril de 2020. Recuperado el 25 de marzo de 2020 a través de GitHub.
- ↑ "Proyectos" . opensource.google . Archivado del original el 24 de abril de 2020. Consultado el 25 de marzo de 2020 .
- ↑ Francisco, Thomas Claburn en San. "El código gruñón de Google hace que Python funcione" . www.theregister.com . Archivado del original el 7 de marzo de 2021. Recuperado el 20 de enero de 2021 .
- ↑ "IronPython.net /" . ironpython.net . Archivado del original el 17 de abril de 2021.
- ↑ "GitHub – IronLanguages/ironpython3: Implementación de Python 3.x para .NET Framework basada en Dynamic Language Runtime" . GitHub . Archivado del original el 28 de septiembre de 2021.
- ↑ "Preguntas frecuentes sobre Jython" . www.jython.org . Archivado del original el 22 de abril de 2021. Consultado el 22 de abril de 2021 .
- ↑ Murri, Riccardo (2013). Rendimiento de los entornos de ejecución de Python en un código científico no numérico . Conferencia Europea sobre Python en la Ciencia (EuroSciPy). arXiv : 1404.6388 . Bibcode : 2014arXiv1404.6388M .
- ↑ "El juego de evaluación comparativa de lenguajes informáticos" . Archivado del original el 14 de junio de 2020. Consultado el 30 de abril de 2020 .
- ↑ Python, Real. "Mira mamá, sin bucles for: programación de matrices con NumPy – Real Python" . realpython.com . Consultado el 15 de octubre de 2025 .
- 1 2 Varsovia, Barry; Hylton, Jeremy; Goodger, David (13 de junio de 2000). "PEP 1 – Propósito y directrices de PEP" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 6 de junio de 2020. Recuperado el 19 de abril de 2011 .
- ↑ Cannon, Brett. "Guido, algunos tipos y una lista de correo: cómo se desarrolla Python" . python.org . Python Software Foundation. Archivado del original el 1 de junio de 2009. Consultado el 27 de junio de 2009 .
- ↑ Edge, Jake (23 de febrero de 2022). "Trasladando los errores de Python a GitHub [ LWN.net ] " . Archivado del original el 2 de octubre de 2022 . Recuperado el 2 de octubre de 2022 .
- ↑ "Guía del desarrollador de Python – Guía del desarrollador de Python" . devguide.python.org . Archivado del original el 9 de noviembre de 2020. Consultado el 17 de diciembre de 2019 .
- ↑ Hughes, Owen (24 de mayo de 2021). "Lenguajes de programación: Por qué Python 4.0 podría no llegar nunca, según su creador" . TechRepublic . Archivado del original el 14 de julio de 2022. Consultado el 16 de mayo de 2022 .
- ↑ "PEP 602 – Ciclo de lanzamiento anual para Python" . Python.org . Archivado del original el 14 de junio de 2020. Consultado el 6 de noviembre de 2019 .
- ↑ Edge, Jake (23 de octubre de 2019). "Cambiar el ritmo de lanzamiento de Python [ LWN.net ] " . lwn.net . Archivado del original el 6 de noviembre de 2019 . Recuperado el 6 de noviembre de 2019 .
- ↑ Norwitz, Neal (8 de abril de 2002). " [ Python-Dev ] Calendarios de lanzamiento (antes Estabilidad y cambios)" . Archivado del original el 15 de diciembre de 2018. Recuperado el 27 de junio de 2009 .
- 1 2 Aahz; Baxter, Anthony (15 de marzo de 2001). "PEP 6 – Versiones de corrección de errores" . Propuestas de mejora de Python . Python Software Foundation. Archivado del original el 5 de junio de 2020. Recuperado el 27 de junio de 2009 .
- ↑ "Python Buildbot" . Guía del desarrollador de Python . Python Software Foundation. Archivado del original el 5 de junio de 2020. Consultado el 24 de septiembre de 2011 .
- 1 2 "Despertando el apetito" . El tutorial de Python . Python Software Foundation. Archivado del original el 26 de octubre de 2012. Recuperado el 20 de febrero de 2012 .
- ↑ "¿En Python, debo usar else después de un return en un bloque if?" . Stack Overflow . Stack Exchange. 17 de febrero de 2011. Archivado del original el 20 de junio de 2019. Consultado el 6 de mayo de 2011 .
- ↑ Lutz 2013 , pág. 17.
- ↑ Fehily, Chris (2002). Python . Peachpit Press. pág. xv. ISBN 978-0-201-74884-0Archivado del original el 17 de julio de 2017. Consultado el 9 de mayo de 2017 .
- ↑ Lubanovic, Bill (2014). Introducción a Python . Sebastopol, CA : O'Reilly Media. pág. 305. ISBN 978-1-4493-5936-2Consultado el 31 de julio de 2023 .
- ↑ Esterbrook, Charles. "Agradecimientos" . cobra-language.com . Cobra Language. Archivado del original el 8 de febrero de 2008. Recuperado el 7 de abril de 2010 .
- ↑ "Propuestas: iteradores y generadores [ ES4 Wiki ] " . wiki.ecmascript.org. Archivado del original el 20 de octubre de 2007. Recuperado el 24 de noviembre de 2008 .
- ↑ Kincaid, Jason (10 de noviembre de 2009). "Go de Google: un nuevo lenguaje de programación que combina Python y C++" . TechCrunch . Archivado del original el 18 de enero de 2010. Consultado el 29 de enero de 2010 .
- ↑ "Por qué creamos Julia" . Sitio web de Julia . Febrero de 2012. Archivado del original el 2 de mayo de 2020. Consultado el 5 de junio de 2014.
Queremos algo tan útil para la programación general como Python [...]
- ↑ "Documentación modular: ¿Por qué Mojo?" . docs.modular.com . Archivado del original el 5 de mayo de 2023 . Recuperado el 5 de mayo de 2023 .
Mojo como miembro de la familia Python [...] Adoptar Python simplifica enormemente nuestros esfuerzos de diseño, porque la mayor parte de la sintaxis ya está especificada. [...] Decidimos que el objetivo correcto a largo plazo para Mojo es proporcionar un superconjunto de Python (es decir, ser compatible con programas existentes) y adoptar CPython de inmediato para habilitar el ecosistema de cola larga. Para un programador de Python, esperamos que Mojo sea inmediatamente familiar, a la vez que proporciona nuevas herramientas para desarrollar código a nivel de sistema que le permiten hacer cosas para las que Python recurre a C y C++.
- ↑ Spencer, Michael (4 de mayo de 2023). "¿Qué es el lenguaje de programación Mojo?" . datasciencelearningcenter.substack.com . Archivado del original el 5 de mayo de 2023. Recuperado el 5 de mayo de 2023 .
- ↑ "GDScript" . gdscript.com . Consultado el 24 de noviembre de 2025 .
Fuentes
- "Python para la inteligencia artificial" . Python Wiki. 19 de julio de 2012. Archivado del original el 1 de noviembre de 2012. Consultado el 3 de diciembre de 2012 .
- Paine, Jocelyn, ed. (agosto de 2005). "IA en Python" . Boletín de expertos en IA . Amzi!. Archivado del original el 26 de marzo de 2012. Recuperado el 11 de febrero de 2012 .
- "PyAIML 0.8.5: Índice de paquetes de Python" . Pypi.python.org . Consultado el 17 de julio de 2013 .
- Russell, Stuart J. y Norvig, Peter (2009). Inteligencia artificial: un enfoque moderno (3.ª ed.). Upper Saddle River, NJ: Prentice Hall. ISBN 978-0-13-604259-4.
Lecturas adicionales
- Downey, Allen (julio de 2024). Think Python: Cómo pensar como un científico informático (3.ª ed.). O'Reilly Media. ISBN 978-1-0981-5543-8.
- Lutz, Mark (2013). Aprendiendo Python (5.ª ed.). O'Reilly Media. ISBN 978-0-596-15806-4.
- Summerfield, Mark (2009). Programación en Python 3 (2.ª ed.). Addison-Wesley Professional. ISBN 978-0-321-68056-3.
- Ramalho, Luciano (mayo de 2022). Pitón fluido . Medios O'Reilly. ISBN 978-1-4920-5632-4.
Enlaces externos
- Python (lenguaje de programación)
- Herramientas de programación
- marcos de trabajo web
- Software libre programado en Python
- Lenguajes de programación basados en clases
- Interfaz de portátil
- Informática en los Países Bajos
- Lenguajes de programación concurrentes
- Software libre multiplataforma
- Software multiplataforma
- Inventos holandeses
- Lenguajes de programación de tipado dinámico
- Lenguajes de programación educativa
- Lenguajes de programación de alto nivel
- Tecnologías de la información en los Países Bajos
- Lenguajes de programación multiparadigma
- Lenguajes de programación orientados a objetos
- Lenguajes de programación que coinciden con patrones
- Lenguajes de programación
- Lenguajes de programación creados en 1991
- Lenguajes de scripting
- Lenguajes de programación orientados a texto
- Referencias a Monty Python