Este es un buen artículo. Haga clic aquí para más información.
De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Python es un lenguaje de programación de propósito general de alto nivel interpretado . La filosofía de diseño de Python enfatiza la legibilidad del código con su notable uso de sangría significativa . Sus construcciones de lenguaje , así como su enfoque orientado a objetos , tienen como objetivo ayudar a los programadores a escribir código claro y lógico para proyectos pequeños y grandes. [30]

Python se escribe dinámicamente y se recolecta basura . Admite múltiples paradigmas de programación , incluida la programación estructurada (en particular, procedimental ), orientada a objetos y funcional . Python se describe a menudo como un lenguaje "con pilas incluidas" debido a su amplia biblioteca estándar . [31]

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. [32] Python 2.0 fue lanzado en 2000 e introdujo nuevas características, como listas por comprensión y un sistema de recolección de basura que usa el conteo de referencias y fue descontinuado con la versión 2.7.18 en 2020. [33] Python 3.0 fue lanzado en 2008 y fue un importante revisión del lenguaje que no es completamente compatible con versiones anteriores y gran parte del código de Python 2 no se ejecuta sin modificar en Python 3.

Python se ubica constantemente como uno de los lenguajes de programación más populares. [34] [35] [36] [37] [38]

Historia [ editar ]

Guido van Rossum en OSCON 2006

Python fue concebido a finales de la década de 1980 [39] por Guido van Rossum en Centrum Wiskunde & Informatica (CWI) en los Países Bajos como sucesor del lenguaje de programación ABC , que se inspiró en SETL , [40] capaz de manejar excepciones e interactuar con el Sistema operativo Amoeba . [10] Su implementación comenzó en diciembre de 1989. [41] 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. [42] Ahora comparte su liderazgo como miembro de un consejo directivo de cinco personas. [43] [44] [45] En enero de 2019, los desarrolladores activos del núcleo de Python eligieron a Brett Cannon, Nick Coghlan, Barry Warsaw, Carol Willing y Van Rossum en un "Consejo Directivo" de cinco miembros para liderar el proyecto. [46] Guido van Rossum desde entonces ha retirado su nominación para el Consejo Directivo de 2020. [47]

Python 2.0 fue lanzado el 16 de octubre de 2000, con muchas características nuevas importantes, incluido un recolector de basura que detecta ciclos y soporte para Unicode . [48]

Python 3.0 fue lanzado el 3 de diciembre de 2008. Fue una revisión importante del lenguaje que no es completamente compatible con versiones anteriores . [49] Muchos de sus principales características fueron portado a Python 2.6.x [50] y 2.7.x versión de la serie. Las versiones de Python 3 incluyen la 2to3utilidad, que automatiza (al menos parcialmente) la traducción del código de Python 2 a Python 3. [51]

La fecha de finalización de Python 2.7 se fijó inicialmente en 2015 y luego se pospuso para 2020 debido a la preocupación de que una gran cantidad de código existente no pudiera transferirse fácilmente a Python 3. [52] [53] No más parches de seguridad u otras mejoras serán lanzadas para ello. [54] [55] Con el final de la vida útil de Python 2 , solo se admiten Python 3.6.x [56] y versiones posteriores.

Python 3.9.2 y 3.8.8 se aceleraron [57] ya que todas las versiones de Python (incluida la 2.7 [58] ) tenían problemas de seguridad, lo que conducía a una posible ejecución remota de código [59] y envenenamiento de la caché web . [60]

Filosofía y características del diseño [ editar ]

Python es un lenguaje de programación de múltiples paradigmas . 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 (incluso mediante metaprogramación [61] y metaobjetos (métodos mágicos)). [62] Muchos otros paradigmas son compatibles mediante extensiones, incluido el diseño por contrato [63] [64] y la programación lógica . [sesenta y cinco]

Python usa tipado dinámico y una combinación de recuento de referencias y un recolector de basura con detección de ciclos para la gestión de la memoria . [66] También incluye resolución dinámica de nombres ( enlace tardío ), que enlaza los 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 filter, mapy reducefunciones; enumerar comprensiones , diccionarios , conjuntos y expresiones generadoras . [67] La biblioteca estándar tiene dos módulos (itertools y functools) que implementan herramientas funcionales tomadas de Haskell y Standard ML . [68]

La filosofía central del lenguaje se resume en el documento The Zen of Python ( PEP 20 ), que incluye aforismos como: [69]

  • Lo bello es mejor que lo feo.
  • Explícito es mejor que implícito.
  • Lo simple es mejor que lo complejo.
  • Complejo es mejor que complicado.
  • La legibilidad cuenta.

En lugar de tener todas sus funciones integradas en su núcleo, Python fue diseñado para ser altamente extensible (con módulos). Esta modularidad compacta lo ha hecho particularmente popular como un medio para agregar interfaces programables a aplicaciones existentes. La visión de Van Rossum de un lenguaje básico pequeño con una gran biblioteca estándar y un intérprete fácilmente ampliable surgió de sus frustraciones con ABC , que abrazó el enfoque opuesto. [39]

Python se esfuerza por lograr una sintaxis y una gramática más simples y menos desordenadas, al tiempo que ofrece a los desarrolladores una opción en su metodología de codificación. En contraste con el lema de Perl " hay más de una manera de hacerlo ", Python adopta una filosofía de diseño de "debe haber una, y preferiblemente sólo una, forma obvia de hacerlo". [69] Alex Martelli , miembro de la Python Software Foundation y autor del libro de Python, escribe que "Describir algo como 'inteligente' no se considera un cumplido en la cultura Python". [70]

Los desarrolladores de Python se esfuerzan por evitar la optimización prematura y rechazan los parches en partes no críticas de la implementación de referencia de CPython que ofrecerían aumentos marginales en la velocidad a costa de la claridad. [71] 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 usar PyPy , un compilador justo a tiempo . También está disponible Cython , que traduce una secuencia de comandos de Python a C y realiza llamadas directas a la API de nivel C en el intérprete de Python.

Un objetivo importante de los desarrolladores de Python es que su uso sea divertido. Esto se refleja en el nombre del lenguaje, un tributo al grupo de comedia británico Monty Python [72], y en enfoques ocasionalmente divertidos de tutoriales y materiales de referencia, como ejemplos que se refieren a spam y huevos (de un famoso boceto de Monty Python ). del foo y bar estándar . [73] [74]

Un neologismo común en la comunidad de Python es el pitónico , que puede tener una amplia gama de significados relacionados con el estilo del programa. Decir que el código es pitónico es decir que usa bien los modismos de Python, que es natural o muestra fluidez en el lenguaje, que se ajusta a la filosofía minimalista de Python y el énfasis en la legibilidad. Por el contrario, el código que es difícil de entender o que se lee como una transcripción aproximada de otro lenguaje de programación se denomina no pitónico . [75] [76]

Los usuarios y admiradores de Python, especialmente aquellos considerados conocedores o experimentados, a menudo se denominan Pythonistas . [77] [78]

Sintaxis y semántica [ editar ]

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

Sangría [ editar ]

Python usa sangría de espacios en blanco , en lugar de llaves o palabras clave, para delimitar bloques . Un aumento de la sangría se produce después de determinadas declaraciones; una disminución en la sangría significa el final del bloque actual. [80] Por lo tanto, la estructura visual del programa representa con precisión la estructura semántica del programa. [2] Esta característica a veces se denomina regla de fuera de juego , que comparten otros idiomas, pero en la mayoría de los idiomas la sangría no tiene ningún significado semántico. El tamaño de sangría recomendado es de cuatro espacios. [81]

Declaraciones y flujo de control [ editar ]

Las declaraciones de Python incluyen (entre otras):

  • La declaración de asignación , utilizando un solo signo igual =.
  • La ifdeclaración, que ejecuta condicionalmente un bloque de código, junto con elsey elif(una contracción de else-if).
  • La fordeclaración, que itera sobre un objeto iterable, capturando cada elemento en una variable local para que lo use el bloque adjunto.
  • La whiledeclaración, que ejecuta un bloque de código siempre que su condición sea verdadera.
  • La trydeclaración, que permite que las excepciones generadas en su bloque de código adjunto sean capturadas y manejadas por exceptcláusulas; también asegura que el código de limpieza en un finallybloque siempre se ejecutará independientemente de cómo salga el bloque.
  • La raisedeclaración, que se utiliza para generar una excepción especificada o volver a generar una excepción detectada.
  • La classdeclaració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 withdeclaración, de Python 2.5 publicada en septiembre de 2006, [82] que encierra un bloque de código dentro de un administrador de contexto (por ejemplo, adquirir un bloqueo antes de que se ejecute el bloque de código y liberar el bloqueo después, o abrir un archivo y luego cerrar it), lo que permite un comportamiento similar a la adquisición de recursos es la inicialización (RAII) y reemplaza un lenguaje común try / finalmente. [83]
  • La breakdeclaración sale de un bucle.
  • La continuedeclaración omite esta iteración y continúa con el siguiente elemento.
  • La deldeclaración elimina una variable, lo que significa que la referencia del nombre al valor se elimina y si se intenta usar esa variable se producirá un error. Se puede reasignar una variable eliminada.
  • La passdeclaración, que sirve como NOP . Se necesita sintácticamente para crear un bloque de código vacío.
  • La assertdeclaración, utilizada durante la depuración para comprobar las condiciones que deberían aplicarse.
  • La yielddeclaración, que devuelve un valor de una función generadora . Desde Python 2.5, yieldtambién es un operador. Este formulario se utiliza para implementar corrutinas .
  • La returndeclaración, utilizada para devolver un valor de una función.
  • La importinstrucción, que se usa para importar módulos cuyas funciones o variables se pueden usar en el programa actual. Hay tres formas de usar import: o o .import <module name> [as <alias>]from <module name> import *from <module name> import <definition 1> [as <alias 1>], <definition 2> [as <alias 2>], ...

La instrucción de asignación ( =) opera mediante la unión de un nombre como una referencia a una separada, asignada dinámicamente objeto . Posteriormente, las variables pueden rebotar en cualquier momento a cualquier objeto. En Python, un nombre de variable es un titular de referencia genérico y no tiene un tipo de datos fijo asociado. Sin embargo, en un momento dado, una variable se referirá a algún objeto, que tendrá un tipo. Esto se conoce como tipado dinámico y se contrasta con los lenguajes de programación de tipado estático , donde cada variable solo puede contener valores de un cierto tipo.

Python no admite la optimización de llamadas de cola o continuaciones de primera clase y, según Guido van Rossum, nunca lo hará. [84] [85] Sin embargo, en 2.5 se proporciona un mejor soporte para la funcionalidad similar a una corrutina , al extender los generadores de Python . [86] Antes de 2.5, los generadores eran iteradores perezosos ; la información se pasó unidireccionalmente fuera del generador. Desde Python 2.5, es posible devolver información a una función generadora, y desde Python 3.3, la información se puede pasar a través de múltiples niveles de pila. [87]

Expresiones [ editar ]

Algunas expresiones de Python son similares a las que se encuentran en lenguajes como C y Java , mientras que otras no lo son:

  • La suma, la resta y la multiplicación son iguales, pero el comportamiento de la división es diferente. Hay dos tipos de divisiones en Python. Son división de piso (o división de enteros) //y /división de punto flotante . [88] Python también usa el **operador para exponenciación.
  • Desde Python 3.5, @se introdujo el nuevo operador infijo. Está destinado a ser utilizado por bibliotecas como NumPy para la multiplicación de matrices . [89] [90]
  • Desde Python 3.8, :=se introdujo la sintaxis , llamada 'operador de morsa'. Asigna valores a variables como parte de una expresión más grande. [91]
  • En Python, ==compara por valor, versus Java, que compara números por valor [92] y objetos por referencia. [93] (Las comparaciones de valores en Java en objetos se pueden realizar con el equals()método). El isoperador de Python se puede usar para comparar identidades de objetos (comparación por referencia). En Python, las comparaciones pueden estar encadenadas, por ejemplo .a <= b <= c
  • Python usa las palabras and, or, notpor sus operadores booleanos en lugar de lo simbólico &&, ||, !utilizado en Java y C.
  • Python tiene un tipo de expresión denominada comprensión de lista , así como una expresión más general denominada expresión generadora . [67]
  • Las funciones anónimas se implementan mediante expresiones lambda ; sin embargo, estos están limitados porque el cuerpo solo puede ser una expresión.
  • Las expresiones condicionales en Python se escriben como [94] (diferente en el orden de operandos del operador común a muchos otros lenguajes).x if c else yc ? x : y
  • Python hace una distinción entre listas y tuplas . Las listas se escriben como , son mutables y no se pueden usar como claves de diccionarios (las claves de diccionario deben ser inmutables en Python). Las tuplas se escriben 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 utilizar para concatenar dos tuplas, lo que no modifica directamente su contenido, sino que produce una nueva tupla que contiene los elementos de ambas tuplas proporcionadas. Por lo tanto, dada la variable inicialmente igual a , la ejecución primero evalúa , lo que produce , que luego se asigna de nuevo a[1, 2, 3](1, 2, 3)+t(1, 2, 3)t = t + (4, 5)t + (4, 5)(1, 2, 3, 4, 5)t, modificando así efectivamente el contenido de t, mientras se ajusta a la naturaleza inmutable de los objetos de tupla. Los paréntesis son opcionales para tuplas en contextos no ambiguos. [95]
  • Python presenta un desempaquetado de secuencias en el que múltiples expresiones, cada una de las cuales evalúa cualquier cosa que pueda asignarse (una variable, una propiedad de escritura, etc.), se asocian de manera idéntica a la que forman los literales de tupla y, en su conjunto, se colocan en el lado izquierdo del signo igual en una declaración de asignación. La declaración espera un objeto iterable en el lado derecho del signo igual que produce el mismo número de valores que las expresiones de escritura proporcionadas cuando se itera y lo recorrerá, asignando cada uno de los valores producidos a la expresión correspondiente de la izquierda. . [96]
  • Python tiene un operador de "formato de cadena" %. Esto funciona de manera análoga para printfformatear cadenas en C , por ejemplo, evalúa a . En Python 3 y 2.6+, esto se complementó con el método de la clase, por ejemplo . Python 3.6 añadió "F-cuerdas": . [97]"spam=%s eggs=%d" % ("blah", 2)"spam=blah eggs=2"format()str"spam={0} eggs={1}".format("blah", 2)blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'
  • Las cadenas en Python se pueden concatenar "agregándolas" (el mismo operador que para sumar enteros y flotantes). Ej . Devoluciones . Incluso si sus cadenas contienen números, todavía se agregan como cadenas en lugar de enteros. Ej . Devoluciones ."spam" + "eggs""spameggs""2" + "2""22"
  • Python tiene varios tipos de cadenas literales :
    • Cadenas delimitadas por comillas simples o dobles. A diferencia de los shells de Unix , Perl y los lenguajes influenciados por Perl, las comillas simples y las comillas dobles funcionan de manera idéntica. Ambos tipos de cadenas 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". [97]
    • Cadenas de comillas triples, que comienzan y terminan con una serie de tres comillas simples o dobles. Pueden abarcar varias líneas y funcionar como aquí documentos en shells, Perl y Ruby .
    • Variedades de cadenas sin procesar , que se indican anteponiendo el literal de cadena con un r. Las secuencias de escape no se interpretan; por lo tanto, las cadenas sin formato son útiles donde las barras invertidas literales son comunes, como las expresiones regulares y las rutas de estilo de Windows . Compare " @-quoting" en C # .
  • Python tiene expresiones de índice de matriz y de división de matriz en listas, indicadas como a[key], o . Los índices se basan en cero y los índices negativos son relativos al final. Los sectores toman elementos desde el índice de inicio hasta el índice de parada , pero sin incluirlo . El tercer parámetro de corte, llamado paso o paso , permite omitir e invertir elementos. Los índices de corte pueden omitirse, por ejemplo, devuelve una copia de la lista completa. Cada elemento de un sector es una copia superficial .a[start:stop]a[start:stop:step]a[:]

En Python, la distinción entre expresiones y declaraciones se aplica de forma rígida, en contraste con lenguajes como Common Lisp , Scheme o Ruby . Esto conduce a la duplicación de algunas funciones. Por ejemplo:

  • Lista de comprensiones vs.- forbucles
  • Expresiones condicionales frente a ifbloques
  • Las funciones eval()vs. exec()incorporadas (en Python 2, execes una declaración); el primero es para expresiones, el segundo es para declaraciones.

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

Métodos [ editar ]

Los métodos sobre objetos son funciones adjuntas a la clase del objeto; la sintaxis es, para métodos y funciones normales, azúcar sintáctico para . Los métodos de Python tienen un parámetro explícito para acceder a los datos de la instancia , en contraste con el implícito (o ) en algunos otros lenguajes de programación orientados a objetos (por ejemplo, C ++ , Java , Objective-C o Ruby ). [98]instance.method(argument)Class.method(instance, argument)selfselfthis

Escribiendo [ editar ]

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

Python usa la escritura pato y tiene objetos escritos pero nombres de variables sin escribir. Las restricciones de tipo no se comprueban en el momento de la compilación ; más bien, las operaciones sobre un objeto pueden fallar, lo que significa que el objeto dado no es de un tipo adecuado. A pesar de estar escrito dinámicamente , Python está fuertemente tipado , lo que prohíbe las 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 utilizando 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, o ), y las clases son instancias de la metaclase (en sí misma 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: de estilo antiguo y nuevo estilo . [99] La sintaxis de ambos estilos es la misma, la diferencia es si la clase objectse hereda, directa o indirectamente (todas las clases de estilo nuevo heredan objecty son instancias de type). En las versiones de Python 2 desde Python 2.2 en adelante, se pueden usar ambos tipos de clases. Las clases de estilo antiguo se eliminaron en Python 3.0.

El plan a largo plazo es soportar la escritura gradual [100] y desde Python 3.5, la sintaxis del lenguaje permite especificar tipos estáticos pero no están marcados en la implementación predeterminada, CPython . Un verificador de tipo estático opcional experimental llamado mypy admite la verificación de tipos en tiempo de compilación. [101]

^ a No se puede acceder directamente por su nombre

Operaciones aritméticas [ editar ]

Python tiene los símbolos habituales para operadores aritméticos ( +, -, *, /), el operador de división baja //y la operación de módulo % (donde el resto puede ser negativo, por ejemplo 4 % -3 == -2). También tiene **por exponenciación , por ejemplo, 5**3 == 125y 9**0.5 == 3.0, y un operador de multiplicación de matriz @. [105] Estos operadores funcionan como en las matemáticas tradicionales; con las mismas reglas de precedencia , los operadores son infijos ( +y -también pueden ser unarios 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: [106]

  • Python 2.1 y versiones anteriores usaban el comportamiento de división de C. El /operador es la división de enteros si ambos operandos son enteros y la división de punto flotante en caso contrario. La división de enteros se redondea hacia 0, por ejemplo, y .7/3 == 2-7/3 == -2
  • Python 2.2 cambió la división de enteros para redondear hacia el infinito negativo, por ejemplo, 7/3 == 2y -7/3 == -3. Se //presentó al operador de la división de piso . Por lo tanto 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0y -7.5//3 == -3.0. Agregar hace que un módulo use las reglas de Python 3.0 para la división (ver a continuación).from __future__ import division
  • Python 3.0 cambió /para ser siempre una división de punto flotante, por ejemplo .5/2 == 2.5

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

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 siempre es cierta. También significa que la ecuación es válida tanto para valores positivos como negativos de . Sin embargo, mantener la validez de esta ecuación significa que mientras el resultado de está, como se esperaba, en el intervalo semiabierto [0, b ), donde es un número entero positivo, tiene que estar en el intervalo ( b , 0] cuando es negativo. [107](a + b)//b == a//b + 1b*(a//b) + a%b == aaa%bbb

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

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 < cprueba si aes menor que by bmenor que c. [110] Los lenguajes derivados de C interpretan esta expresión de manera diferente: en C, la expresión primero se evaluaría a < b, dando como resultado 0 o 1, y ese resultado luego se compararía con c. [111]

Python usa aritmética de precisión arbitraria para todas las operaciones con números enteros. El Decimaltipo / clase en el decimalmódulo proporciona números de coma flotante decimal con una precisión arbitraria predefinida y varios modos de redondeo. [112] La Fractionclase en el fractionsmódulo proporciona precisión arbitraria para números racionales . [113]

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 scripting científico para ayudar en problemas como el procesamiento y la manipulación de datos numéricos. [114] [115]

Ejemplos de programación [ editar ]

Programa Hola mundo :

print ( '¡Hola, mundo!' )

Programa para calcular el factorial de un entero positivo:

n  =  int ( input ( 'Escriba un número y se imprimirá su factorial:' ))si  n  <  0 :  raise  ValueError ( 'Debe ingresar un entero no negativo' )factorial  =  1 para  i  en el  rango ( 2 ,  n  +  1 ):  factorial  * =  iimprimir ( factorial )

Bibliotecas [ editar ]

La gran biblioteca estándar de Python , comúnmente citada como una de sus mayores fortalezas, [116] proporciona herramientas adecuadas para muchas tareas. 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, [117] 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) wsgirefsigue a PEP 333 [118] ), pero la mayoría de los módulos no. Están especificados por su código, documentación interna y conjuntos de pruebas . Sin embargo, debido a que la mayor parte de la biblioteca estándar es código Python multiplataforma, solo algunos módulos necesitan ser alterados o reescritos para implementaciones variantes.

En marzo de 2021, el índice de paquetes de Python (PyPI), el repositorio oficial de software de Python de terceros, contiene más de 290.000 [119] paquetes con una amplia gama de funciones, que incluyen:

  • Automatización
  • Analítica de datos
  • Bases de datos
  • Documentación
  • Interfaces gráficas de usuario
  • Procesamiento de imágenes
  • Aprendizaje automático
  • Aplicación movil
  • Multimedia
  • Redes de computadoras
  • Computación científica
  • Administracion del sistema
  • Marcos de prueba
  • Procesamiento de texto
  • Frameworks web
  • Raspado web

Entornos de desarrollo [ editar ]

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

Otros shells, incluidos IDLE e IPython , agregan capacidades adicionales como autocompletado mejorado, retención del estado de la sesión y resaltado de sintaxis .

Además de los entornos de desarrollo integrados de escritorio estándar , existen IDE basados ​​en navegador web ; SageMath (destinado a desarrollar programas de Python relacionados con la ciencia y las matemáticas); PythonAnywhere , un entorno de alojamiento e IDE basado en navegador; y Canopy IDE, un IDE comercial de Python que enfatiza la computación científica . [120]

Implementaciones [ editar ]

Implementación de referencia [ editar ]

CPython es la implementación de referencia de Python. Está escrito en C , cumpliendo con el estándar C89 con varias características selectas de C99 (con versiones posteriores de C, se considera desactualizado; [121] [122] CPython incluye sus propias extensiones de C, pero las extensiones de terceros no se limitan a las versiones de C anteriores. versiones, por ejemplo, pueden implementarse con C11 o C ++ [123] ). [124] Compila los programas Python en un bytecode intermedio [125] que luego es ejecutado por su máquina virtual . [126]CPython se distribuye con una gran biblioteca estándar escrita en una mezcla de C y Python nativo. Está disponible para muchas plataformas, incluida Windows (a partir de Python 3.9, el instalador de Python deliberadamente no se instala en Windows 7 y 8; [127] [128] Windows XP fue compatible hasta Python 3.5) y la mayoría de los sistemas modernos similares a Unix, incluyendo macOS (y Apple M1 Macs, desde Python 3.9.1, con instalador experimental) y soporte no oficial para, por ejemplo, VMS . [129] La portabilidad de la plataforma fue una de sus primeras prioridades, [130] durante el período de tiempo de Python 1 y 2, incluso OS / 2 ySolaris fueron compatibles; [131] Desde entonces, el soporte se ha eliminado para muchas plataformas.

Otras implementaciones [ editar ]

  • PyPy es un intérprete rápido y compatible de Python 2.7 y 3.6. [132] Su compilador just-in-time trae una mejora de velocidad significativa sobre CPython pero varias bibliotecas escritas en C no se pueden usar con él. [133] [134]
  • Stackless Python es una bifurcación importante de CPython que implementa microhilos ; no usa la pila de llamadas de la misma manera, permitiendo así programas masivamente concurrentes. PyPy también tiene una versión sin pila. [135]
  • MicroPython y CircuitPython son variantes de Python 3 optimizadas para microcontroladores , incluido Lego Mindstorms EV3 . [136]
  • Pyston es una variante del tiempo de ejecución de Python que utiliza la compilación justo a tiempo para acelerar la ejecución de los programas de Python. [137]

Implementaciones no admitidas [ editar ]

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

  • Google inició un proyecto llamado Unladen Swallow en 2009, con el objetivo de cinco veces más rápido el intérprete de Python mediante el uso de LLVM y de mejorar su capacidad de subprocesos múltiples para escalar a miles de núcleos, [138] mientras que las implementaciones ordinarias sufren el bloqueo global del intérprete .
  • Psyco es un compilador especializado discontinuado justo a tiempo (que no era compatible con Python 2.7 o posterior) que se integra con CPython y transforma el código de bytes en código de máquina en tiempo de ejecución. El código emitido está especializado para ciertos tipos de datos y es más rápido que el código estándar de Python.
  • PyS60 fue un intérprete de Python 2 para teléfonos móviles Serie 60 lanzado por Nokia en 2005. Implementó muchos de los módulos de la biblioteca estándar y algunos módulos adicionales para integrarse con el sistema operativo Symbian . El Nokia N900 también es compatible con Python con bibliotecas de widgets GTK , lo que permite escribir y ejecutar programas en el dispositivo de destino. [139]

Compiladores cruzados a otros idiomas [ editar ]

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

  • Cython compila (un superconjunto de) Python 2.7 en C (mientras que el código resultante también se puede utilizar con Python 3 y también, por ejemplo, con C ++ ).
  • Nuitka compila Python en C ++. [140]
  • Pythran compila un subconjunto de Python 3 en C ++ . [141] [142] [143]
  • Pyrex (última versión de 2010) y Shed Skin (última versión de 2013) se compilan en C y C ++ respectivamente.
  • Grumpy de Google (última versión de 2017) transpila Python 2 to Go . [144] [145] [146]
  • IronPython (ahora abandonado por Microsoft) permite ejecutar programas Python 2.7 en .NET Common Language Runtime .
  • Jython compila Python 2.7 en código de bytes de Java, lo que permite el uso de las bibliotecas de Java desde un programa de Python.
  • MyHDL es un lenguaje de descripción de hardware (HDL) basado en Python , que convierte el código MyHDL en código Verilog o VHDL .
  • Numba usa LLVM para compilar un subconjunto de Python en código de máquina.
  • Brython, [147] Transcrypt [148] [149] y Pyjs (última versión de 2012) compilan Python en JavaScript .
  • RPython se puede compilar en C y se usa para construir el intérprete PyPy de Python.

Rendimiento [ editar ]

En EuroSciPy '13 se presentó una comparación de rendimiento de varias implementaciones de Python en una carga de trabajo no numérica (combinatoria). [150] El rendimiento de Python en comparación con otros lenguajes de programación también está evaluado por The Computer Language Benchmarks Game . [151]

Desarrollo [ editar ]

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

La mejora del lenguaje se corresponde con el desarrollo de la implementación de referencia CPython. La lista de correo python-dev es el foro principal para el desarrollo del lenguaje. Los problemas específicos se discuten en el rastreador de errores de Roundup alojado en bugs.python.org . [154] Desarrollo tuvo lugar originalmente en un auto-organizada repositorio de código de origen que ejecuta Mercurial , hasta que se trasladó a Python GitHub en enero de 2017. [155]

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

  • Versiones incompatibles con versiones anteriores, donde se espera que el código se rompa y deba ser transferido manualmente . Se incrementa la primera parte del número de versión. Estos lanzamientos ocurren con poca frecuencia: la versión 3.0 se lanzó 8 años después de la 2.0.
  • Lanzamientos importantes o de "características", ocurrieron aproximadamente cada 18 meses, pero con la adopción de una cadencia de lanzamiento anual que comienza con Python 3.9, se espera que sucedan una vez al año. [156] [157] Son en gran parte compatibles pero introducen nuevas características. La segunda parte del número de versión se incrementa. Cada versión principal es compatible con correcciones de errores durante varios años después de su lanzamiento. [158]
  • Las versiones de corrección de errores, [159] que no introducen nuevas características, ocurren aproximadamente cada 3 meses y se realizan cuando se ha corregido una cantidad suficiente de errores desde la última versión. Las vulnerabilidades de seguridad también están parcheadas en estas versiones. Se incrementa la tercera y última parte del número de versión. [159]

Muchos candidatos alfa, beta y de lanzamiento también se publican como vistas previas y para probar antes de los lanzamientos finales. Aunque existe un cronograma aproximado para cada versión, 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 gran conjunto de pruebas unitarias durante el desarrollo. [160]

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

Pythons 3.10 desaprueba wstr (que se eliminará en Python 3.12; lo que significa que las extensiones de Python [161] deben modificarse para entonces), [162] y también planea agregar coincidencia de patrones al lenguaje. [163]

Generadores de documentación API [ editar ]

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. [164]

Nombrar [ editar ]

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; [165] por ejemplo, las variables metasintácticas que se utilizan a menudo en la literatura de Python son spam y huevos en lugar del tradicional foo y bar . [165] [166] La documentación oficial de Python también contiene varias referencias a las rutinas de Monty Python. [167] [168]

El prefijo Py- se usa para mostrar que algo está relacionado con Python. 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.

Usos [ editar ]

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 TIOBE , donde, a partir de febrero de 2021 , es el tercer lenguaje más popular (detrás de Java y C ). [169] 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 idioma que lo hizo cuatro veces [170] ). [171]

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 era a menudo "mejor que Java y no mucho peor que C o C ++ ". [172]

Las grandes organizaciones que utilizan Python incluyen Wikipedia , Google , [173] Yahoo! , [174] CERN , [175] NASA , [176] Facebook , [177] Amazon , Instagram , [178] Spotify [179] y algunas entidades más pequeñas como ILM [180] e ITA . [181] El sitio de redes de noticias sociales Reddit se escribió principalmente en Python. [182]

Python puede servir como lenguaje de programación para aplicaciones web , por ejemplo, a través de mod_wsgi para el servidor web Apache . [183] Con Web Server Gateway Interface , se ha desarrollado una API estándar para facilitar estas aplicaciones. Los frameworks web como Django , Pylons , Pyramid , TurboGears , web2py , Tornado , Flask , Bottle y Zope apoyan a los desarrolladores en el diseño y mantenimiento de aplicaciones complejas. Pyjs yIronPython se puede utilizar para desarrollar el lado del cliente de aplicaciones basadas en Ajax. SQLAlchemy se puede utilizar como un mapeador de datos para una base de datos relacional. Twisted es un marco para programar comunicaciones entre computadoras y es utilizado (por ejemplo) por Dropbox .

Bibliotecas como NumPy , SciPy y Matplotlib permiten el uso eficaz de Python en la informática científica , [184] [185] con bibliotecas especializadas como Biopython y Astropy que proporcionan funcionalidad específica de dominio. SageMath es un software matemático con una interfaz de cuaderno programable en Python: su biblioteca cubre muchos aspectos de las matemáticas , incluyendo álgebra , combinatoria , matemáticas numéricas , teoría de números y cálculo.. [186] OpenCV tiene enlaces de Python con un rico conjunto de características para visión por computadora y procesamiento de imágenes . [187]

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 . [188] [189] [190] [191] Como lenguaje de programación con arquitectura modular , sintaxis simple y herramientas de procesamiento de texto enriquecido, Python se usa a menudo para el procesamiento del lenguaje natural . [192]

Python se ha integrado con éxito en muchos productos de software como lenguaje de scripting, incluso en software de método de elementos finitos como Abaqus , modelador paramétrico 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 , [193] Inkscape , Scribus yPaint Shop Pro , [194] y programas de notación musical como scorewriter y capella . GNU Debugger usa Python como una bonita impresora para mostrar estructuras complejas como contenedores de C ++. Esri promueve Python como la mejor opción para escribir scripts en ArcGIS . [195] También se ha utilizado en varios videojuegos, [196] [197] 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 . [198]

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

Python se utiliza ampliamente en la industria de la seguridad de la información , incluido el desarrollo de exploits. [200] [201]

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

LibreOffice incluye Python y tiene la intención de reemplazar Java con Python. Su proveedor de secuencias de comandos de Python es una característica principal [203] desde la versión 4.0 del 7 de febrero de 2013.

Idiomas influenciados por Python [ editar ]

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

  • Boo usa sangría, una sintaxis similar y un modelo de objeto similar. [204]
  • Cobra usa sangría y una sintaxis similar, y su documento de Agradecimientos enumera a Python primero entre los lenguajes que lo influenciaron. [205]
  • CoffeeScript , un lenguaje de programación que se compila en forma cruzada con JavaScript, tiene una sintaxis inspirada en Python.
  • ECMAScript / JavaScript tomó prestados iteradores y generadores de Python. [206]
  • GDScript , un lenguaje de secuencias de comandos muy similar a Python, integrado en el motor del juego Godot . [207]
  • Go está diseñado para la "velocidad de trabajar en un lenguaje dinámico como Python" [208] y comparte la misma sintaxis para dividir arreglos.
  • Groovy estaba motivado por el deseo de llevar la filosofía de diseño de Python a Java . [209]
  • Julia fue diseñada para ser "tan útil para la programación general como Python". [26]
  • Nim usa sangría y una sintaxis similar. [210]
  • El creador de Ruby , Yukihiro Matsumoto , ha dicho: "Quería un lenguaje de scripting que fuera más poderoso que Perl y más orientado a objetos que Python. Por eso decidí diseñar mi propio lenguaje". [211]
  • Swift , un lenguaje de programación desarrollado por Apple, tiene una sintaxis inspirada en Python. [212]

Las prácticas de desarrollo de Python también han sido emuladas por otros lenguajes. Por ejemplo, la práctica de requerir 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 , [213] Erlang , [214] y Swift. [215]

Ver también [ editar ]

  • Sintaxis y semántica de Python
  • pip (administrador de paquetes)
  • Programación diferenciable

Referencias [ editar ]

  1. ^ "Preguntas frecuentes generales sobre Python - Documentación de Python 3.9.2" . docs.python.org . Consultado el 28 de marzo de 2021 .
  2. ↑ a b Guttag, John V. (12 de agosto de 2016). Introducción a la computación y la programación usando Python: con aplicación para comprender datos . MIT Press. ISBN 978-0-262-52962-4.
  3. ^ "La revisión de Python 3.9.4 ya está disponible" . 4 de abril de 2021 . Consultado el 5 de abril de 2021 .
  4. ^ "Python 3.10.0a7 ya está disponible para probar" . 6 de abril de 2021 . Consultado el 6 de abril de 2021 .
  5. ^ "¿Por qué Python es un lenguaje dinámico y también un lenguaje fuertemente tipado - Python Wiki" . wiki.python.org . Consultado el 27 de enero de 2021 .
  6. ^ "PEP 483 - La teoría de sugerencias de tipo" . Python.org .
  7. ^ La extensión de archivo .pyo se eliminó en Python 3.5. Ver PEP 0488
  8. ^ Holth, Moore (30 de marzo de 2014). "PEP 0441 - Mejora de la compatibilidad con la aplicación Python ZIP" . Consultado el 12 de noviembre de 2015 .
  9. ^ "Lenguaje de Starlark" . Consultado el 25 de mayo de 2019 .
  10. ^ a b "¿Por qué se creó Python en primer lugar?" . Preguntas frecuentes generales sobre Python . Fundación de software Python . Consultado el 22 de marzo de 2007 .
  11. ^ "Manual de referencia de Ada 83 (declaración de aumento)" .
  12. ^ Kuchling, Andrew M. (22 de diciembre de 2006). "Entrevista a Guido van Rossum (julio de 1998)" . amk.ca . Archivado desde el original el 1 de mayo de 2007 . Consultado el 12 de marzo de 2012 .
  13. ^ a b "itertools - Funciones que crean iteradores para un bucle eficiente - Documentación de Python 3.7.1" . docs.python.org .
  14. van Rossum, Guido (1993). "Introducción a Python para programadores de UNIX / C". Actas de la NLUUG Najaarsconferentie (Grupo holandés de usuarios de UNIX) . CiteSeerX 10.1.1.38.2023 . aunque el diseño de C está lejos de ser ideal, su influencia en Python es considerable. 
  15. ^ a b "Clases" . El tutorial de Python . Fundación de software Python . Consultado el 20 de febrero de 2012 . Es una mezcla de los mecanismos de clase que se encuentran en C ++ y Modula-3.
  16. ^ Lundh, Fredrik. "Llamar por objeto" . effbot.org . Consultado el 21 de noviembre de 2017 . reemplace "CLU" con "Python", "registro" con "instancia" y "procedimiento" con "función o método", y obtendrá una descripción bastante precisa del modelo de objetos de Python.
  17. ^ Simionato, Michele. "El orden de resolución del método Python 2.3" . Fundación de software Python. El método C3 en sí no tiene nada que ver con Python, ya que fue inventado por personas que trabajaban en Dylan y se describe en un documento destinado a los lispers.
  18. ^ Kuchling, AM "CÓMO de programación funcional" . Documentación de Python v2.7.2 . Fundación de software Python . Consultado el 9 de febrero de 2012 .
  19. ^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 de mayo de 2001). "PEP 255 - Generadores simples" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 9 de febrero de 2012 .
  20. ^ Smith, Kevin D .; Jewett, Jim J .; Montanaro, Skip; Baxter, Anthony (2 de septiembre de 2004). "PEP 318 - Decoradores para funciones y métodos" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 24 de febrero de 2012 .
  21. ^ "Más herramientas de control de flujo" . Documentación de Python 3 . Fundación de software Python . Consultado el 24 de julio de 2015 .
  22. ^ "CoffeeScript" . coffeescript.org .
  23. ^ "Tutorial del lenguaje de programación Genie" . Consultado el 28 de febrero de 2020 .
  24. ^ "Influencias de Perl y Python en JavaScript" . www.2ality.com . 24 de febrero de 2013 . Consultado el 15 de mayo de 2015 .
  25. ^ Rauschmayer, Axel. "Capítulo 3: la naturaleza de JavaScript; influencias" . O'Reilly, hablando JavaScript . Consultado el 15 de mayo de 2015 .
  26. ^ a b "Por qué creamos a Julia" . Sitio web de Julia . Febrero de 2012 . Consultado el 5 de junio de 2014 . Queremos algo tan utilizable para la programación general como Python [...]
  27. ^ Ring Team (4 de diciembre de 2017). "Ring y otros idiomas" . ring-lang.net . ring-lang .
  28. ^ Bini, Ola (2007). Proyectos prácticos de JRuby on Rails Web 2.0: llevar Ruby on Rails a la plataforma Java . Berkeley: APulse. pag. 3 . ISBN 978-1-59059-881-8.
  29. ^ Lattner, Chris (03 de junio de 2014). "Página de inicio de Chris Lattner" . Chris Lattner . Consultado el 3 de junio de 2014 . El lenguaje Swift es el producto del esfuerzo incansable de un equipo de expertos en lenguaje, gurús de la documentación, ninjas de optimización de compiladores y un grupo interno de prueba interna increíblemente importante que brindó comentarios para ayudar a refinar y probar ideas. Por supuesto, también se benefició enormemente de las experiencias ganadas con esfuerzo por muchos otros lenguajes en el campo, extrayendo ideas de Objective-C, Rust, Haskell, Ruby, Python, C #, CLU y demasiados otros para enumerarlos.
  30. ^ Kuhlman, Dave. "Un libro de Python: principios de Python, Python avanzado y ejercicios de Python" . Sección 1.1. Archivado desde el original (PDF) el 23 de junio de 2012.
  31. ^ "Acerca de Python" . Fundación de software Python . Consultado el 24 de abril de 2012 ., segunda sección "Los fanáticos de Python usan la frase" baterías incluidas "para describir la biblioteca estándar, que cubre todo, desde el procesamiento asincrónico hasta los archivos zip".
  32. ^ Rossum, Guido Van (20 de enero de 2009). "La historia de Python: una breve cronología de Python" . La historia de Python . Consultado el 5 de marzo de 2021 .
  33. ^ Peterson, Benjamin (20 de abril de 2020). "Python Insider: Python 2.7.18, la última versión de Python 2" . Python Insider . Consultado el 27 de abril de 2020 .
  34. ^ Índice TIOBE (diciembre de 2020). "Índice TIOBE de diciembre de 2020" . TIOBE.com . Consultado el 20 de diciembre de 2020 .
  35. ^ "índice | TIOBE - La empresa de calidad de software" . www.tiobe.com . Consultado el 2 de febrero de 2021 . ¡Python ha ganado el premio al lenguaje de programación TIOBE del año! Esta es la cuarta vez en la historia, ¡lo cual es un récord! El título se otorga al lenguaje de programación que ha ganado más popularidad en un año.
  36. ^ "Encuesta de desarrolladores de desbordamiento de pila 2020" . Desbordamiento de pila . Consultado el 5 de marzo de 2021 .
  37. ^ "El estado del ecosistema del desarrollador en 2020 Infografía" . JetBrains: herramientas de desarrollo para profesionales y equipos . Consultado el 5 de marzo de 2021 .
  38. ^ "Índice de popularidad PYPL del lenguaje de programación" . pypl.github.io . Consultado el 26 de marzo de 2021 .
  39. ↑ a b Venners, Bill (13 de enero de 2003). "La fabricación de Python" . Desarrollador Artima . Artima . Consultado el 22 de marzo de 2007 .
  40. van Rossum, Guido (29 de agosto de 2000). "SETL (era: tibio acerca de los literales de rango)" . Python-Dev (lista de correo) . Consultado el 13 de marzo de 2011 .
  41. van Rossum, Guido (20 de enero de 2009). "Una breve cronología de Python" . La historia de Python . Consultado el 20 de enero de 2009 .
  42. ^ Fairchild, Carlie (12 de julio de 2018). "Guido van Rossum dimitiendo de su papel como dictador benévolo de Python de por vida" . Revista de Linux . Consultado el 13 de julio de 2018 .
  43. ^ "Guido van Rossum renunciando a su papel como dictador benévolo de Python de por vida | Linux Journal" . www.linuxjournal.com .
  44. ^ "El jefe de Python, Guido van Rossum, dimite después de 30 años" . El indagador .
  45. ^ "PEP 8100" . pitón . Fundación de software Python . Consultado el 4 de mayo de 2019 .
  46. ^ "PEP 8100" . Fundación de software Python . Consultado el 4 de mayo de 2019 .
  47. ^ "Nominación del Consejo Directivo: Guido van Rossum (término de 2020)" . Discusiones en Python.org . 27 de noviembre de 2019.
  48. ^ Kuchling, AM; Zadka, Moshe (16 de octubre de 2000). "Novedades de Python 2.0" . Fundación de software Python . Consultado el 11 de febrero de 2012 .
  49. ^ "Lanzamiento de Python 3.0" . Fundación de software Python . Consultado el 8 de julio de 2009 .
  50. van Rossum, Guido (5 de abril de 2006). "PEP 3000 - Python 3000" . Propuestas de mejora de Python . Fundación de software Python. Archivado desde el original el 3 de marzo de 2016 . Consultado el 27 de junio de 2009 .
  51. ^ "2to3 - Traducción automática de código Python 2 a 3" . docs.python.org . Consultado el 2 de febrero de 2021 .
  52. ^ "PEP 373 - Programa de lanzamiento de Python 2.7" . python.org . Consultado el 9 de enero de 2017 .
  53. ^ "PEP 466 - Mejoras de seguridad de red para Python 2.7.x" . python.org . Consultado el 9 de enero de 2017 .
  54. ^ "Puesta del sol Python 2" . Python.org . Consultado el 22 de septiembre de 2019 .
  55. ^ "PEP 373 - Programa de lanzamiento de Python 2.7" . Python.org . Consultado el 22 de septiembre de 2019 .
  56. ^ "Guía del desarrollador de Python - Guía del desarrollador de Python" . devguide.python.org . Consultado el 17 de diciembre de 2019 .
  57. ^ Langa, Łukasz (19 de febrero de 2021). "Python Insider: Python 3.9.2 y 3.8.8 ya están disponibles" . Python Insider . Consultado el 26 de febrero de 2021 .
  58. ^ "Portal del cliente de Red Hat - Acceso a soporte y conocimiento 24x7" . access.redhat.com . Consultado el 26 de febrero de 2021 .
  59. ^ "CVE - CVE-2021-3177" . cve.mitre.org . Consultado el 26 de febrero de 2021 .
  60. ^ "CVE - CVE-2021-23336" . cve.mitre.org . Consultado el 26 de febrero de 2021 .
  61. ^ The Cain Gang Ltd. "Metaclases de Python: ¿Quién? ¿Por qué? ¿Cuándo?" (PDF) . Archivado desde el original (PDF) el 30 de mayo de 2009 . Consultado el 27 de junio de 2009 .
  62. ^ "3.3. Nombres de métodos especiales" . La referencia del lenguaje Python . Fundación de software Python . Consultado el 27 de junio de 2009 .
  63. ^ "PyDBC: condiciones previas del método, condiciones posteriores del método e invariantes de clase para Python" . Consultado el 24 de septiembre de 2011 .
  64. ^ "Contratos para Python" . Consultado el 24 de septiembre de 2011 .
  65. ^ "PyDatalog" . Consultado el 22 de julio de 2012 .
  66. ^ "Ampliación e incrustación del intérprete de Python: recuentos de referencia" . Docs.python.org . Consultado el 5 de junio de 2020 . Dado que Python hace un uso intensivo de y , necesita una estrategia para evitar pérdidas de memoria, así como el uso de memoria liberada. El método elegido se llama recuento de referencias .malloc()free()
  67. ↑ a b Hettinger, Raymond (30 de enero de 2002). "PEP 289 - Expresiones del generador" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 19 de febrero de 2012 .
  68. ^ "6.5 itertools - Funciones que crean iteradores para un bucle eficiente" . Docs.python.org . Consultado el 22 de noviembre de 2016 .
  69. ↑ a b Peters, Tim (19 de agosto de 2004). "PEP 20 - El Zen de Python" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 24 de noviembre de 2008 .
  70. ^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Libro de cocina de Python, segunda edición . O'Reilly Media . pag. 230. ISBN 978-0-596-00797-3.
  71. ^ "Cultura de Python" . ebeab . 21 de enero de 2014. Archivado desde el original el 30 de enero de 2014.
  72. ^ "Preguntas frecuentes generales sobre Python" . Documentación de Python v2.7.3 . Docs.python.org . Consultado el 4 de junio de 2020 .
  73. ^ "15 formas en que Python es una fuerza poderosa en la Web" .
  74. ^ "8.18. Pprint - Impresora bonita de datos - Documentación de Python 3.8.3" . docs.python.org .
  75. ^ https://towardsdatascience.com/how-to-be-pythonic-and-why-you-should-care-188d63a5037e
  76. ^ https://docs.python-guide.org/writing/style/
  77. ^ Goodger, David. "Código como un Pythonista: Python idiomático" . Archivado desde el original el 27 de mayo de 2014 . Consultado el 24 de marzo de 2009 .
  78. ^ "Cómo pensar como un Pythonista" .
  79. ^ "¿Es Python un buen lenguaje para programadores principiantes?" . Preguntas frecuentes generales sobre Python . Fundación de software Python . Consultado el 21 de marzo de 2007 .
  80. ^ "Mitos sobre la sangría en Python" . Secnetix.de . Consultado el 19 de abril de 2011 .
  81. ^ https://www.python.org/dev/peps/pep-0008/#indentation
  82. ^ "Lanzamiento de Python 2.5" . Python.org .
  83. ^ "Aspectos destacados: Python 2.5" . Python.org .
  84. van Rossum, Guido (22 de abril de 2009). "Eliminación de la recursividad de la cola" . Neopythonic.blogspot.be . Consultado el 3 de diciembre de 2012 .
  85. van Rossum, Guido (9 de febrero de 2006). "El diseño del lenguaje no es solo resolver acertijos" . Foros de Artima . Artima . Consultado el 21 de marzo de 2007 .
  86. van Rossum, Guido; Eby, Phillip J. (10 de mayo de 2005). "PEP 342 - Corutinas a través de generadores mejorados" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 19 de febrero de 2012 .
  87. ^ "PEP 380" . Python.org . Consultado el 3 de diciembre de 2012 .
  88. ^ "división" . python.org .
  89. ^ "PEP 0465 - Un operador infijo dedicado para la multiplicación de matrices" . python.org . Consultado el 1 de enero de 2016 .
  90. ^ "Registro de cambios y lanzamiento de Python 3.5.1" . python.org . Consultado el 1 de enero de 2016 .
  91. ^ "Novedades de Python 3.8" . Consultado el 14 de octubre de 2019 .
  92. ^ "Capítulo 15. Expresiones - 15.21.1. Operadores de igualdad numérica == y! =" . Oracle Corporation . Consultado el 28 de agosto de 2016 .
  93. ^ "Capítulo 15. Expresiones - 15.21.3. Operadores de igualdad de referencia == y! =" . Oracle Corporation . Consultado el 28 de agosto de 2016 .
  94. van Rossum, Guido; Hettinger, Raymond (7 de febrero de 2003). "PEP 308 - Expresiones condicionales" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 13 de julio de 2011 .
  95. ^ "4. Tipos integrados - documentación de Python 3.6.3rc1" . python.org . Consultado el 1 de octubre de 2017 .
  96. ^ "5.3. Tuplas y secuencias - Documentación de Python 3.7.1rc2" . python.org . Consultado el 17 de octubre de 2018 .
  97. ^ a b "PEP 498 - Interpolación de cadenas literal" . python.org . Consultado el 8 de marzo de 2017 .
  98. ^ "¿Por qué se debe usar 'self' explícitamente en las definiciones y llamadas de métodos?" . Preguntas frecuentes sobre diseño e historia . Fundación de software Python . Consultado el 19 de febrero de 2012 .
  99. ^ "La referencia del lenguaje Python, sección 3.3. Clases clásicas y de estilo nuevo, para la versión 2.7.1" . Consultado el 12 de enero de 2011 .
  100. ^ "Escriba sugerencias para Python" . LWN.net. 24 de diciembre de 2014 . Consultado el 5 de mayo de 2015 .
  101. ^ "mypy - Escritura estática opcional para Python" . Consultado el 28 de enero de 2017 .
  102. ^ "15. Aritmética de punto flotante: problemas y limitaciones - documentación de Python 3.8.3" . docs.python.org . Consultado 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 flotantes de Python a IEEE-754 de “doble precisión”.
  103. ^ Zadka, Moshe; van Rossum, Guido (11 de marzo de 2001). "PEP 237 - Unificando enteros largos y enteros" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 24 de septiembre de 2011 .
  104. ^ "Tipos integrados" . Consultado el 3 de octubre de 2019 .
  105. ^ "PEP 465 - Un operador infijo dedicado para la multiplicación de matrices" . python.org .
  106. ^ a b Zadka, Moshe; van Rossum, Guido (11 de marzo de 2001). "PEP 238 - Cambio de operador de división" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 23 de octubre de 2013 .
  107. ^ "Por qué pisos de división de enteros de Python" . Consultado el 25 de agosto de 2010 .
  108. ^ "ronda" , la biblioteca estándar de Python, versión 3.2, §2: Funciones integradas , consultado el 14 de agosto de 2011
  109. ^ "ronda" , La biblioteca estándar de Python, versión 2.7, §2: Funciones integradas , consultado el 14 de agosto de 2011
  110. ^ Beazley, David M. (2009). Referencia esencial de Python (4ª ed.). pag. 66 .
  111. ^ Kernighan, Brian W .; Ritchie, Dennis M. (1988). El lenguaje de programación C (2ª ed.). pag. 206 .
  112. ^ Batista, Facundo. "PEP 0327 - Tipo de datos decimal" . Python.org . Consultado el 26 de septiembre de 2015 .
  113. ^ "Novedades de Python 2.6 - Documentación de Python v2.6.9" . docs.python.org . Consultado el 26 de septiembre de 2015 .
  114. ^ "10 razones Python Rocks para la investigación (y algunas razones por las que no) - Hoyt Koepke" . www.stat.washington.edu . Consultado el 3 de febrero de 2019 .
  115. ^ Shell, Scott (17 de junio de 2014). "Una introducción a Python para la informática científica" (PDF) . Consultado el 3 de febrero de 2019 .
  116. ^ Piotrowski, Przemyslaw (julio de 2006). "Crear un entorno de desarrollo web rápido para páginas de servidor Python y Oracle" . Red de tecnología de Oracle . Oracle . Consultado el 12 de marzo de 2012 .
  117. ^ Batista, Facundo (17 de octubre de 2003). "PEP 327 - Tipo de datos decimal" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 24 de noviembre de 2008 .
  118. ^ Eby, Phillip J. (7 de diciembre de 2003). "PEP 333 - Interfaz de puerta de enlace del servidor web Python v1.0" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 19 de febrero de 2012 .
  119. ^ Debill, Erik. "Recuentos de módulo" . ModuleCounts . Consultado el 2 de febrero de 2021 .
  120. ^ Enthought, Canopy. "Canopy" . www.enthought.com . Consultado el 20 de agosto de 2016 .
  121. ^ "Mailman 3 ¿Por qué no permitimos el uso de C11? - Python-Dev - python.org" . mail.python.org . Consultado el 1 de marzo de 2021 .
  122. ^ "Problema 35473: el compilador Intel (icc) no es totalmente compatible con las funciones de C11, incluidas las atómicas: rastreador de Python" . bugs.python.org . Consultado el 1 de marzo de 2021 .
  123. ^ "4. Construir extensiones C y C ++ - Documentación de Python 3.9.2" . docs.python.org . Consultado el 1 de marzo de 2021 .
  124. van Rossum, Guido (5 de junio de 2001). "PEP 7 - Guía de estilo para código C" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 24 de noviembre de 2008 .
  125. ^ "Código de bytes CPython" . Docs.python.org . Consultado el 16 de febrero de 2016 .
  126. ^ "Internos de Python 2.5" (PDF) . Consultado el 19 de abril de 2011 .
  127. ^ "Registro de cambios - Documentación de Python 3.9.0" . docs.python.org . Consultado el 8 de febrero de 2021 .
  128. ^ "Descargar Python" . Python.org . Consultado el 13 de diciembre de 2020 .
  129. ^ "historia [vmspython]" . www.vmspython.org . Consultado el 4 de diciembre de 2020 .
  130. ^ "Una entrevista con Guido van Rossum" . Oreilly.com . Consultado el 24 de noviembre de 2008 .
  131. ^ "Descargar Python para otras plataformas" . Python.org . Consultado el 4 de diciembre de 2020 .
  132. ^ "Compatibilidad con PyPy" . Pypy.org . Consultado el 3 de diciembre de 2012 .
  133. ^ "comparación de velocidad entre CPython y Pypy" . Speed.pypy.org . Consultado el 3 de diciembre de 2012 .
  134. ^ Shaw, Anthony (30 de marzo de 2018). "¿Cuál es la versión más rápida de Python?" . Hacker Noon . Consultado el 20 de diciembre de 2019 .
  135. ^ "Características de Stackless a nivel de aplicación - documentación de PyPy 2.0.2" . Doc.pypy.org . Consultado el 17 de julio de 2013 .
  136. ^ "Python-para-EV3" . LEGO Education . Consultado el 17 de abril de 2019 .
  137. ^ Yegulalp, Serdar (29 de octubre de 2020). "Pyston regresa de entre los muertos para acelerar Python" . InfoWorld . Consultado el 26 de enero de 2021 .
  138. ^ "Planes para optimizar Python" . Alojamiento de proyectos de Google . 15 de diciembre de 2009 . Consultado el 24 de septiembre de 2011 .
  139. ^ "Python en el Nokia N900" . Geometría estocástica . 29 de abril de 2010.
  140. ^ "Casa Nuitka | Casa Nuitka" . nuitka.net . Consultado el 18 de agosto de 2017 .
  141. ^ Borderies, Olivier (24 de enero de 2019). "Pythran: ¡Python a velocidad C ++!" . Medio .
  142. ^ "Pythran - documentación de Pythran 0.9.5" . pythran.readthedocs.io .
  143. ^ http://conference.scipy.org/proceedings/scipy2013/html/pdfs/guelton.pdf
  144. ^ "google / gruñón" . 10 de abril de 2020 - a través de GitHub.
  145. ^ "Proyectos" . opensource.google .
  146. ^ https://www.theregister.com/2017/01/05/googles_grumpy_makes_python_go/
  147. ^ "Brython" . brython.info . Consultado el 21 de enero de 2021 .
  148. ^ "Transcrypt - Python en el navegador" . transcrypt.org . Consultado el 22 de diciembre de 2020 .
  149. ^ https://www.infoq.com/articles/transcrypt-python-javascript-compiler/
  150. ^ Murri, Riccardo (2013). Rendimiento de los tiempos 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 . Código Bibliográfico : 2014arXiv1404.6388M .
  151. ^ "El juego de parámetros de lenguaje de computadora" . Consultado el 30 de abril de 2020 .
  152. ^ a b Varsovia, Barry; Hylton, Jeremy; Goodger, David (13 de junio de 2000). "PEP 1 - Propósito y directrices de PEP" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 19 de abril de 2011 .
  153. ^ "PEP 8 - Guía de estilo para código Python" . Python.org .
  154. ^ Cañón, Brett. "Guido, algunos chicos y una lista de correo: cómo se desarrolla Python" . python.org . Fundación de software Python. Archivado desde el original el 1 de junio de 2009 . Consultado el 27 de junio de 2009 .
  155. ^ "Guía del desarrollador de Python" .
  156. ^ "PEP 602 - ciclo de lanzamiento anual para Python" . Python.org . Consultado el 6 de noviembre de 2019 .
  157. ^ "Cambiar la cadencia de lanzamiento de Python [LWN.net]" . lwn.net . Consultado el 6 de noviembre de 2019 .
  158. ^ Norwitz, Neal (8 de abril de 2002). "[Python-Dev] Horarios de lanzamiento (era estabilidad y cambio)" . Consultado el 27 de junio de 2009 .
  159. ^ a b Aahz; Baxter, Anthony (15 de marzo de 2001). "PEP 6 - Lanzamientos de corrección de errores" . Propuestas de mejora de Python . Fundación de software Python . Consultado el 27 de junio de 2009 .
  160. ^ "Python Buildbot" . Guía del desarrollador de Python . Fundación de software Python . Consultado el 24 de septiembre de 2011 .
  161. ^ "1. Ampliación de Python con C o C ++ - documentación de Python 3.9.1" . docs.python.org . Consultado el 14 de febrero de 2021 .
  162. ^ "PEP 623 - Eliminar wstr de Unicode" . Python.org . Consultado el 14 de febrero de 2021 .
  163. ^ "PEP 634 - Coincidencia de patrones estructurales: especificación" . Python.org . Consultado el 14 de febrero de 2021 .
  164. ^ "Herramientas de documentación" . Python.org . Consultado el 22 de marzo de 2021 .
  165. ^ a b "Abriendo el apetito" . El tutorial de Python . Fundación de software Python . Consultado el 20 de febrero de 2012 .
  166. ^ "En Python, ¿debería usar else después de un retorno en un bloque if?" . Desbordamiento de pila . Stack Exchange. 17 de febrero de 2011 . Consultado el 6 de mayo de 2011 .
  167. ^ Lutz, Mark (2009). Aprendiendo Python: Potente Programación Orientada a Objetos . O'Reilly Media, Inc. pág. 17. ISBN 9781449379322.
  168. ^ Fehily, Chris (2002). Python . Peachpit Press. pag. xv. ISBN 9780201748840.
  169. ^ "Índice TIOBE" . TIOBE: la empresa de calidad del software . Consultado el 26 de febrero de 2021 .
  170. Blake, Author Troy (18 de enero de 2021). "Índice TIOBE de enero de 2021" . Noticias e información de tecnología por SeniorDBA . Consultado el 26 de febrero de 2021 .
  171. ^ Índice de software TIOBE (2015). "Python del índice de la comunidad de programación de TIOBE" . Consultado el 10 de septiembre de 2015 .
  172. ^ Prechelt, Lutz (14 de marzo de 2000). "Una comparación empírica de C, C ++, Java, Perl, Python, Rexx y Tcl" (PDF) . Consultado el 30 de agosto de 2013 .
  173. ^ "Citas sobre Python" . Fundación de software Python . Consultado el 8 de enero de 2012 .
  174. ^ "Organizaciones que utilizan Python" . Fundación de software Python . Consultado el 15 de enero de 2009 .
  175. ^ "Python: el santo grial de la programación" . Boletín CERN . Publicaciones del CERN (31/2006). 31 de julio de 2006 . Consultado el 11 de febrero de 2012 .
  176. ^ Shafer, Daniel G. (17 de enero de 2003). "Python simplifica el diseño de la misión del transbordador espacial" . Fundación de software Python . Consultado el 24 de noviembre de 2008 .
  177. ^ "Tornado: marco web en tiempo real de Facebook para Python - Facebook para desarrolladores" . Facebook para desarrolladores . Consultado el 19 de junio de 2018 .
  178. ^ "Lo que impulsa Instagram: cientos de instancias, docenas de tecnologías" . Ingeniería de Instagram . Consultado el 27 de mayo de 2019 .
  179. ^ "Cómo usamos Python en Spotify" . Spotify Labs . 20 de marzo de 2013 . Consultado el 25 de julio de 2018 .
  180. ^ Fortenberry, Tim (17 de enero de 2003). "Industrial Light & Magic se ejecuta en Python" . Fundación de software Python . Consultado el 11 de febrero de 2012 .
  181. ^ Taft, Darryl K. (5 de marzo de 2007). "Python se desliza en sistemas" . eWeek.com . Ziff Davis Holdings . Consultado el 24 de septiembre de 2011 .
  182. ^ GitHub - reddit-archive / reddit: código histórico de reddit.com. , The Reddit Archives , consultado el 20 de marzo de 2019
  183. ^ "Estadísticas de uso y cuota de mercado de Python para sitios web" . 2012 . Consultado el 18 de diciembre de 2012 .
  184. ^ Oliphant, Travis (2007). "Python para la informática científica" . Computación en Ciencias e Ingeniería . 9 (3): 10-20. Código bibliográfico : 2007CSE ..... 9c..10O . CiteSeerX 10.1.1.474.6460 . doi : 10.1109 / MCSE.2007.58 . S2CID 206457124 .  
  185. ^ Millman, K. Jarrod; Aivazis, Michael (2011). "Python para científicos e ingenieros" . Computación en Ciencias e Ingeniería . 13 (2): 9-12. Código bibliográfico : 2011CSE .... 13b ... 9M . doi : 10.1109 / MCSE.2011.36 .
  186. Science education with SageMath , Innovative Computing in Science Education , consultado el 22 de abril de 2019
  187. ^ "OpenCV: Tutoriales de OpenCV-Python" . docs.opencv.org . Consultado el 14 de septiembre de 2020 .
  188. ^ Dean, Jeff ; Monga, Rajat; et al. (9 de noviembre de 2015). "TensorFlow: aprendizaje automático a gran escala en sistemas heterogéneos" (PDF) . TensorFlow.org . Investigación de Google . Consultado el 10 de noviembre de 2015 .
  189. ^ Piatetsky, Gregory. "Python corroe R: el mejor software para análisis, ciencia de datos, aprendizaje automático en 2018: tendencias y análisis" . KDnuggets . KDnuggets . Consultado el 30 de mayo de 2018 .
  190. ^ "¿Quién está usando scikit-learn? - documentación de scikit-learn 0.20.1" . scikit-learn.org .
  191. ^ Jouppi, Norma . "Google sobrealimenta las tareas de aprendizaje automático con un chip personalizado de TPU" . Blog de Google Cloud Platform . Consultado el 19 de mayo de 2016 .
  192. ^ "Kit de herramientas de lenguaje natural - documentación NLTK 3.5b1" . www.nltk.org .
  193. ^ "Instaladores de GIMP para Windows - Preguntas más frecuentes" . 26 de julio de 2013. Archivado desde el original el 17 de julio de 2013 . Consultado el 26 de julio de 2013 .
  194. ^ "jasc psp9components" . Archivado desde el original el 19 de marzo de 2008.
  195. ^ "Acerca de cómo empezar a escribir scripts de geoprocesamiento" . Ayuda de ArcGIS Desktop 9.2 . Instituto de Investigación de Sistemas Ambientales. 17 de noviembre de 2006 . Consultado el 11 de febrero de 2012 .
  196. ^ Vientre de cerdo del PCCh (24 de agosto de 2010). "Python 2.7 sin pilas" . Blogs de desarrollo de la comunidad de EVE . Juegos del PCCh . Como sabrá, EVE tiene en su núcleo el lenguaje de programación conocido como Stackless Python.
  197. ^ Caudill, Barry (20 de septiembre de 2005). "Modificación de la civilización IV de Sid Meier" . Blog para desarrolladores de Sid Meier's Civilization IV . Juegos de Firaxis . Archivado desde el original el 2 de diciembre de 2010. Creamos tres niveles de herramientas ... El siguiente nivel ofrece compatibilidad con Python y XML, lo que permite a los modders con más experiencia manipular el mundo del juego y todo lo que contiene.
  198. ^ "Guía del lenguaje Python (v1.0)" . API de datos de lista de documentos de Google v1.0 . Archivado desde el original el 15 de julio de 2010.
  199. ^ "Configuración y uso de Python" . Fundación de software Python . Consultado el 10 de enero de 2020 .
  200. ^ "Inmunidad: saber que está seguro" . Archivado desde el original el 16 de febrero de 2009.
  201. ^ "Seguridad central" . Seguridad básica .
  202. ^ "¿Qué es el azúcar?" . Laboratorios de azúcar . Consultado el 11 de febrero de 2012 .
  203. ^ "4.0 nuevas funciones y correcciones" . LibreOffice.org . The Document Foundation . 2013 . Consultado el 25 de febrero de 2013 .
  204. ^ "Problemas para los usuarios de Python" . boo.codehaus.org . Fundación Codehaus. Archivado desde el original el 11 de diciembre de 2008 . Consultado el 24 de noviembre de 2008 .
  205. ^ Esterbrook, Charles. "Agradecimientos" . cobra-language.com . Lenguaje Cobra . Consultado el 7 de abril de 2010 .
  206. ^ "Propuestas: iteradores y generadores [ES4 Wiki]" . wiki.ecmascript.org. Archivado desde el original el 20 de octubre de 2007 . Consultado el 24 de noviembre de 2008 .
  207. ^ "Preguntas frecuentes: ¿Qué es GDScript y por qué debería usarlo?" .
  208. ^ Kincaid, Jason (10 de noviembre de 2009). "Go de Google: un nuevo lenguaje de programación que Python cumple con C ++" . TechCrunch . Consultado el 29 de enero de 2010 .
  209. ^ Strachan, James (29 de agosto de 2003). "Groovy - el nacimiento de un nuevo lenguaje dinámico para la plataforma Java" . Archivado desde el original el 5 de abril de 2007 . Consultado el 11 de junio de 2007 .
  210. ^ Yegulalp, Serdar (16 de enero de 2017). "El lenguaje Nim se basa en lo mejor de Python, Rust, Go y Lisp" . InfoWorld . La sintaxis de Nim recuerda mucho a la de Python, ya que utiliza bloques de código con sangría y parte de la misma sintaxis (como la forma en que se construyen los bloques if / elif / then / else).
  211. ^ "Una entrevista con el creador de Ruby" . Linuxdevcenter.com . Consultado el 3 de diciembre de 2012 .
  212. ^ Lattner, Chris (03 de junio de 2014). "Página de inicio de Chris Lattner" . Chris Lattner . Consultado el 3 de junio de 2014 . Comencé a trabajar en el lenguaje de programación Swift en julio de 2010. Implementé gran parte de la estructura básica del lenguaje, y solo unas pocas personas sabían de su existencia. Algunas otras (increíbles) personas comenzaron a contribuir en serio a fines de 2011, y se convirtió en un enfoque importante para el grupo de herramientas de desarrollo de Apple en julio de 2013 [...] extrayendo ideas de Objective-C, Rust, Haskell, Ruby, Python, C #, CLU y demasiados otros para enumerarlos.
  213. ^ Kupries, Andreas; Becarios, Donal K. (14 de septiembre de 2000). "TIP # 3: Formato TIP" . tcl.tk . Tcl Developer Xchange . Consultado el 24 de noviembre de 2008 .
  214. ^ Gustafsson, Per; Niskanen, Raimo (29 de enero de 2007). "EEP 1: Propósito y directrices de EEP" . erlang.org . Consultado el 19 de abril de 2011 .
  215. ^ "Proceso de evolución rápida" . Repositorio de Swift Programming Language Evolution en GitHub . 18 de febrero de 2020 . Consultado el 27 de abril de 2020 .

Fuentes [ editar ]

  • "Python para la inteligencia artificial" . Wiki.python.org. 19 de julio de 2012. Archivado desde el original el 1 de noviembre de 2012 . Consultado el 3 de diciembre de 2012 .
  • Paine, Jocelyn, ed. (Agosto de 2005). "AI en Python" . Boletín de expertos en inteligencia artificial . Amzi !. Archivado desde el original el 26 de marzo de 2012 . Consultado 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, Nueva Jersey: Prentice Hall. ISBN 978-0-13-604259-4.

Lectura adicional [ editar ]

  • Downey, Allen B. (mayo de 2012). Think Python: Cómo pensar como un informático (Versión 1.6.6 ed.). ISBN 978-0-521-72596-5.
  • Hamilton, Naomi (5 de agosto de 2008). "La AZ de los lenguajes de programación: Python" . Computerworld . Archivado desde el original el 29 de diciembre de 2008 . Consultado el 31 de marzo de 2010 .
  • Lutz, Mark (2013). Aprendiendo Python (5a ed.). O'Reilly Media. ISBN 978-0-596-15806-4.
  • Peregrino, Mark (2004). Sumérgete en Python . Presione. ISBN 978-1-59059-356-1.
  • Peregrino, Mark (2009). Sumérgete en Python 3 . Presione. ISBN 978-1-4302-2415-0.
  • Summerfield, Mark (2009). Programación en Python 3 (2ª ed.). Addison-Wesley Professional. ISBN 978-0-321-68056-3.

Enlaces externos [ editar ]

  • Página web oficial