Contenido Checked

Python (lenguaje de programación)

Temas relacionados: Programas de computadoras

Antecedentes de las escuelas de Wikipedia

Esta selección se hace para las escuelas de caridad para niños leer más . patrocinio SOS Niño es cool!

Pitón
Python oficial del logotipo
Paradigma (s) multi-paradigma: orientado a objetos, imperativo, funcional, reflectante
Apareció en 1991
Diseñado por Guido van Rossum
Revelador Python Software Foundation
Última versión estable 27 3.1.3 / noviembre de 2010 (27/11/2010)
27 2.7.1 / noviembre de 2010 (27/11/2010)
Release Preview 3.2 RC 1/16 de enero 2011 (2011-01-16)
Disciplina Typing pato, dinámica, fuerte
Las principales implementaciones CPython, IronPython, Jython, Python para S60, PyPy, Trago
Dialectos Cython, RPython, Stackless Python
Influenciado por ABC, ALGOL 68, C , C ++ , Haskell, Icono, Java , Lisp, Modula-3, Perl
Influenciado Boo, Cobra, D, Falcon, Groovy, JavaScript Rubí
OS Multiplataforma
Licencia Python Software Foundation License
Usual extensiones de archivos .py, .pyw, .pyc, .pyo, .pyd
  • www.python.org
  • Python Programación de Wikilibros

Python es una interpretado de propósito general lenguaje de programación de alto nivel cuya filosofía de diseño hace hincapié en la legibilidad del código. Python tiene como objetivo combinar "el poder con una sintaxis muy clara", y su biblioteca estándar es grande y amplio. Su uso de sangría para el bloque delimitadores es único entre los lenguajes de programación.

Python admite múltiples paradigmas de programación, principalmente, pero no limitado a, orientado a objetos, imperativa y, en menor medida, estilos de programación funcional. Cuenta con un completo sistema de tipo dinámico y automático la gestión de memoria, similar a la de Esquema, Ruby, Perl , y Tcl. Al igual que otros lenguajes dinámicos, Python se utiliza a menudo como un lenguaje de script, pero también se utiliza en una amplia gama de contextos no de secuencias de comandos.

La implementación de referencia de Python ( CPython) es software libre y de código abierto y tiene un modelo de desarrollo basado en la comunidad, al igual que todos o casi todos sus implementaciones alternativas. CPython es administrado por la organización no lucrativa Python Software Foundation.

Intérpretes de Python están disponibles para muchos sistemas operativos y programas de Python pueden ser empaquetados en código ejecutable independiente para muchos sistemas que utilizan diversas herramientas.

Historia

Python fue concebido a finales de 1980 y su aplicación se inició en diciembre de 1989 por Guido van Rossum en CIT en la Holanda como un sucesor para el Lenguaje de programación de ABC (sí inspirados por SETL) capaz de manejo de excepciones y la interfaz con el Sistema operativo de la ameba. Van Rossum es autor principal de Python, y su papel central en la decisión de continuar la dirección de Python se refleja en el título que le dio la comunidad Python, BDFL (BDFL).

Python 2.0 fue lanzado el 16 de octubre de 2000, con muchas características nuevas más importantes, incluyendo un completo recolector de basura y el apoyo a Unicode. Sin embargo, el cambio más importante fue el propio proceso de desarrollo, con un cambio hacia un proceso más transparente y apoyada por la comunidad. Python 3.0, una versión principal, hacia atrás-incompatible, fue lanzado el 3 de diciembre de 2008 después de un largo periodo de pruebas. Muchas de sus características principales han sido portado a la Python compatible con versiones 2.6 y 2.7. Python fue el ganador de la TIOBE Programación Premio Lengua de 2010 por tener el mayor aumento de la cuota de mercado lenguaje de programación en el transcurso de ese año (+ 1,81%).

Filosofía de programación

Python es una multi-modelo de lenguaje de programación. En lugar de forzar a los programadores a adoptar un estilo de programación, permite varios estilos: programación orientada a objetos y programación estructurada son totalmente compatibles, y hay una serie de características del lenguaje que apoyan programación funcional y orientada a aspectos de programación (incluyendo por metaprogramming y por métodos mágicos). Muchos otros paradigmas son compatibles el uso de extensiones, como pyDBC y Contratos de Python que permiten Diseño por contrato.

Usos Python tipado dinámico y una combinación de recuento de referencias y un ciclo de detección recolector de basura para gestión de memoria. Una característica importante de Python es dinámico Resolución de nombres ( enlace tardío), que se une método y los nombres de variables durante la ejecución del programa.

En lugar de requerir toda la funcionalidad deseada que se construirá en el núcleo de la lengua, Python fue diseñado para ser altamente extensible. Nuevos módulos integrados pueden ser fácilmente escritos en C , C ++ o Cython. Python también se puede utilizar como un lenguaje de extensión para los módulos y aplicaciones existentes que necesitan una interfaz programable. Este diseño de una pequeña lengua de la base con una gran biblioteca estándar y un intérprete fácilmente extensible fue la intención de Van Rossum desde el inicio debido a sus frustraciones con ABC (que abrazó la mentalidad opuesta).

El diseño de Python ofrece un soporte limitado sobre programación funcional en el Tradición Lisp. Sin embargo, la filosofía de diseño de Python presenta importantes similitudes con las de idiomas Lisp familiares minimalistas, como Esquema. La biblioteca estándar tiene dos módulos (itertools y functools) que implementan probadas herramientas funcionales tomados de Haskell y ML estándar.

Además de ofrecer la elección de la metodología de codificación, la filosofía Python rechaza sintaxis exuberante, como por ejemplo en Perl , a favor de una gramática menos desordenada más escasa. Los desarrolladores de Python promueven expresamente una "cultura" en particular o ideología basada en lo que quieren que el lenguaje sea, favoreciendo formas de lenguaje que ellos ven como "hermoso", "explícita" y "simple". Como Alex Martelli puso en su Python Cookbook (2ª ed, p 230..): ". Para describir algo tan inteligente no se considera un complemento en la cultura Python" La filosofía de Python rechaza el Perl " hay más de una manera de hacerlo "enfoque de diseño del lenguaje a favor del" No debe haber una sola manera y preferiblemente sólo una obvia de hacerlo ".

Los desarrolladores de Python evitan la optimización prematura, y, además, rechazar parches a partes no críticas de CPython que ofrecer un aumento marginal en la velocidad a costa de una mayor claridad. Python es a veces descrito como "lento". Sin embargo, por la Principio de Pareto, la mayoría de los problemas y las secciones de programas que no son la velocidad crítica. Cuando la velocidad es un problema, los programadores de Python tienden a tratar de usar un compilador JIT tales como Psyco, la reescritura de las funciones de tiempo crítico en "más cerca del metal de" lenguajes como C, o mediante la traducción (un dialecto del) código Python a código C utilizando herramientas como Cython.

La filosofía de la base de la lengua se resume en el documento "PEP 20 (El Zen de Python)".

Nombre y neologismos

Un objetivo importante de los desarrolladores de Python está haciendo Python divertido de usar. Esto se refleja en el origen del nombre (basado en la serie de televisión Flying Circus de Monty Python), en la práctica común de utilizar referencias Monty Python en el ejemplo de código, y en un enfoque de vez lúdico a tutoriales y materiales de referencia. Por ejemplo, el las variables metasintácticas menudo utilizadas en la literatura son Python Spam y huevos, en lugar de la tradicional foo y bar.

Una común neologismo en la comunidad Python es pythonic, que puede tener una amplia gama de significados relacionados con el estilo de programa. Decir que un trozo de código es pythonic es decir que utiliza bien modismos Python, que es natural o muestra la fluidez en el lenguaje. Del mismo modo, por decir de una característica de interfaz o el idioma que es pythonic es decir que funciona bien con modismos Python, que su uso se articule con el resto de la lengua.

Por el contrario, una marca de código unpythonic es que intenta escribir C ++ (o Lisp, Perl, Java o) de código en Python, es decir, proporciona una transcripción en bruto en lugar de una traducción idiomática de las formas de otro idioma. El concepto de pythonicity está estrechamente ligada a la filosofía minimalista de Python de legibilidad y evitar el "no hay más que una forma de hacerlo" enfoque. Código ilegible o expresiones incomprensibles son unpythonic.

Los usuarios y admiradores de Python-muy especialmente los considerados conocimientos o experiencia, se refieren a menudo como Pythonists, Pythonistas y Pythoneers.

El prefijo Py se puede usar para mostrar que algo está relacionado con Python. Ejemplos de la utilización de este prefijo en los nombres de aplicaciones Python o bibliotecas incluyen Pygame, un unión de SDL para Python (comúnmente utilizado para crear juegos); PyS60, una aplicación para la Symbian Series 60 Sistema Operativo; PyQt y PyGTK, que se unen Qt y GTK, respectivamente, a Python; y PyPy, una implementación de Python escrito en Python. El prefijo también se utiliza fuera de nombrar paquetes de software: el principal Python conferencia se denomina PyCon.

Uso

Python se utiliza a menudo como un lenguaje de scripting para aplicaciones web, por ejemplo, a través de mod_wsgi para el Servidor web Apache. Con Servidor Web Gateway Interface, una API estándar ha sido desarrollado para facilitar estas aplicaciones. Los entornos de aplicaciones Web como Django, Pilones, TurboGears, web2py, Frasco y Desarrolladores de apoyo Zope en el diseño y mantenimiento de aplicaciones complejas. Bibliotecas como NumPy, SciPy y Matplotlib permite Python para utilizar de manera efectiva en la computación científica.

Python se ha incorporado con éxito en una serie de productos de software como un lenguaje de script, incluyendo en software método de elementos finitos como Paquetes de animación Abaqus, 3D, como Maya, MotionBuilder, Softimage, Cinema 4D, BodyPaint 3D, Modo y Blender y 2D programas de imágenes como GIMP, Inkscape, Scribus y Paint Shop Pro. GNU GDB utiliza Python como una impresora bonita de mostrar estructuras complejas tales como contenedores C ++. ESRI está promoviendo Python como la mejor opción para la escritura de guiones en ArcGIS. Incluso se ha utilizado en varios juegos de video y ha sido adoptado como una de las dos disponibles lenguajes de scripting en Google Docs.

Para muchos sistemas operativos, Python es un componente estándar; barcos de TI con más Distribuciones de Linux, NetBSD, OpenBSD y con Mac OS X y puede ser utilizado desde el terminal. Un número de distribuciones Linux de uso instaladores escritos en Python: Ubuntu utiliza el Instalador Ubiquity, mientras Red Hat Linux y Fedora utilizan el Instalador Anaconda. Gentoo Linux utiliza Python en su sistema de gestión de paquetes, Portage y la herramienta estándar para acceder a ella, emerger. Pardus lo utiliza para la administración y durante el inicio del sistema.

Python también ha visto un amplio uso en el industria de seguridad de la información, incluyendo explotar desarrollo.

Entre los usuarios de Python son YouTube y el original Cliente de BitTorrent. Las grandes organizaciones que hacen uso de Python incluyen Google , Yahoo! , CERN, la NASA y ITA. La mayoría de Software de Azúcar para el One Laptop per Child XO, ahora desarrollado en Sugar Labs, está escrito en Python.

Sintaxis y semántica

Sintaxis resaltado Python 2.x código.

Python estaba destinado a ser un lenguaje de fácil lectura. Está diseñado para tener un diseño visual despejada, frecuentemente usando palabras clave en inglés en otros idiomas utilizan puntuacion. Python requiere menos repetitivo que los tradicionales lenguajes estructurados manifiestamente mecanografiadas como C o Pascal, y tiene un menor número de excepciones sintácticas y casos especiales que cualquiera de éstos. Para una descripción detallada de las diferencias entre las versiones 2.xy 3.x, consulte Historia de Python.

Sangría

Usos Python indentación espacios en blanco, en lugar de llaves o palabras clave, para delimitar bloques (una característica también conocido como el regla del fuera de juego). Un aumento en el sangrado se produce después de ciertas declaraciones; una disminución de la indentación significa el final del bloque actual.

Las declaraciones y flujo de control

Declaraciones de Python incluyen (entre otros):

  • La if la declaración, que ejecuta condicionalmente un bloque de código, junto con else y elif (una contracción de else-if).
  • La for declaración, que itera sobre un objeto iterable, capturando cada elemento a una variable local para su uso por el bloque adjunto.
  • La while la declaración, que ejecuta un bloque de código, siempre y cuando su condición es verdadera.
  • La try declaración, que permite excepciones planteadas en su bloque de código adjunto a ser capturados y manipulados por except cláusulas; sino que también asegura que el código de limpieza en un finally bloque siempre se ejecutará independientemente de cómo las salidas de bloque.
  • La class declaración, que ejecuta un bloque de código y se fija su espacio de nombres local a una clase, para su uso en programación orientada a objetos.
  • El def declaración, que define un función o método.
  • El with declaración (de Python 2.6), que encierra un bloque de código dentro de un gestor de contexto (por ejemplo, la adquisición de una bloquear antes de que se ejecute el bloque de código, y liberar el bloqueo después).
  • El pass declaración, que sirve como una NOP y puede ser utilizado en lugar de un bloque de código.
  • La assert declaración, que se utiliza durante la depuración para comprobar si hay condiciones que deberían aplicarse.
  • El yield la declaración, que devuelve un valor de un función de generador. (A partir de Python 2.5, yield es también un operador. Esta forma se utiliza para implementar corrutinas - ver abajo).

Cada declaración tiene su propia semántica: por ejemplo, la def declaración no ejecuta su bloque de inmediato, a diferencia de la mayoría de los otros estados.

CPython no soporta primera clase continuaciones, y de acuerdo con Guido van Rossum que nunca lo hará. Sin embargo, un mejor soporte para funcionalidad co-rutina-como está previsto en 2.5, mediante la extensión de Python generadores. Antes de 2,5, generadores eran perezoso iteradores; información fue transmitida unidireccionalmente fuera del generador. A partir de Python 2.5, es posible pasar información hacia atrás en una función de generador.

Expresiones

Expresiones Python son similares a idiomas como C y Java . Algunas notas importantes:

  • En Python 2, el operador / con enteros hace la división entera, es decir, se trunca el resultado en un entero. En Python 3, sin embargo, el resultado de / es siempre un valor de punto flotante, y un nuevo operador // se presentó a hacer la división entera. En Python 2, este comportamiento se puede habilitar mediante la sentencia de __future__ división de importación o escribe a cielo flotador (x) / flotador (y)
  • En Python, == compara por valor, en contraste con Java, donde se compara por referencia (comparaciones de valor en Java utilizan el método equals). Para comparar como referencia en Python, utilice el operador is.
  • Python usa las palabras and , or , not por sus operadores lógicos en lugar de lo simbólico && , || , ! .
  • Python tiene un tipo importante de expresión conocido como lista por comprensión. Las versiones recientes de Python han ampliado las listas por comprensión en una expresión más general conocido como expresión generadora.
  • Las funciones anónimas se implementan utilizando expresiones lambda; sin embargo, éstos están limitados en que el cuerpo sólo puede ser una sola expresión.
  • Las expresiones condicionales en Python se escriben como y si x demás z (diferente con el fin de operandos de la ?: Operador común a muchos otros idiomas).
  • Python hace una distinción entre listas y tuplas. Las listas se escriben como [1, 2, 3], son mutables, y no se puede utilizar como las teclas de diccionarios (claves de diccionario deben ser inmutables en Python). Las tuplas se escriben como (1, 2, 3), son inmutables y por lo tanto se puede utilizar como las teclas de diccionarios. Los paréntesis alrededor de la tupla son opcionales en algunos contextos. Las tuplas pueden aparecer en la parte izquierda de un signo igual; por lo tanto, una expresión como x, y = y, x puede ser utilizado para intercambiar dos variables.
  • Python 2 tiene un "formato de cadena" operador%. Estas funciones análogas a expresiones printf en C , por ejemplo, "foo =% s bar =% d"% ("bla", 2) se evalúa como "foo bar = bla = 2". En Python 3 este ha sido reemplazado por el método de formato en la clase string, por ejemplo, "foo = {0} bar = {1}". Formato ("bla", 2).
  • Python tiene diversos tipos de cuerdas.
    • Comillas simples o dobles se pueden utilizar para citar cuerdas. A diferencia de en los idiomas de Unix, Perl o lenguajes como Perl influido- Rubí o , Comillas simples Groovy y comillas dobles funcionan de manera idéntica, es decir, no hay ninguna cadena de interpolación de expresiones foo $.
    • También hay cadenas multilínea, que comienzan y terminan con una serie de tres comillas simples o dobles y funcionan como aquí los documentos en los idiomas de concha, Perl y Ruby.
    • Finalmente, todos los tipos de cadena anteriormente mencionados-vienen en " variedades primas "(denotados por la colocación de un r literal antes de la cita de apertura), que no hacer barra invertida-interpolación y por lo tanto son muy útiles para expresiones regulares o de Windows caminos al estilo; comparar "@ -quoting" en C #.
  • Python tiene expresiones de división en las listas, denotados como ... [izquierda: derecha] o ... [izquierda: derecha: zancada]. Por ejemplo, si los nums variables se le asigna la lista [1, 3, 5, 7, 8, 13, 20], entonces las siguientes expresiones evaluarán True:
    • nums [2: 5] == [5, 7, 8], es decir, la rebanada sube, pero no incluyendo, el índice derecho.
    • nums [1:] == [3, 5, 7, 8, 13, 20], es decir, todos los elementos excepto el primero, ya que un índice derecho omitido significa "el fin".
    • nums [: - 3] == [1, 3, 5, 7], es decir, un índice izquierdo omitido significa "el comienzo", y un índice negativo (izquierda o derecha) cuenta desde el final.
    • nums [:] hace una copia de la lista. Esto significa nums == nums [:] es cierto, pero nums es nums [:] es falsa. Los cambios en la copia no afectará al original.
    • nums [1: 5: 2] == [3, 7], es decir, si se dan tres números, el tercero se llama el "paso", lo que indica que en este caso se seleccionará cada segundo elemento.

En Python, una distinción entre expresiones y declaraciones se aplica rígidamente, en contraste con lenguajes como Common Lisp, Esquema o Ruby. Esto conduce a una duplicación de la funcionalidad, por ejemplo,

  • listas por comprensión vs. bucles "for"
  • expresiones condicionales frente a "si" bloques
  • El eval () vs. exec () órdenes internas (en Python 2, exec es un declarador declaración); eval () es para expresiones, exec () es para los estados.

Las declaraciones no pueden ser una parte de una expresión y así la lista y otra comprensiones o expresiones lambda, siendo todas las expresiones, no pueden contener declaraciones. Un caso particular de esto es que una sentencia de asignación como "a = 1" no puede formar parte de la expresión condicional de una sentencia condicional; esto tiene la ventaja de evitar un error de C clásico de confundir una misión token '=', para un operador de igualdad '==' que seguiría siendo válido C en si (c = 1) {...} pero si c = 1: ... es el código Python válido.

Métodos

Métodos de los objetos son funciones vinculadas a la clase del objeto; la sintaxis instance.method(argument) es, para los métodos y funciones normales, azúcar sintáctica para Class.method(instance, argument) . Métodos de Python tienen un explícito self parámetro para el acceso datos de la instancia, en contraste con el auto implícita en algunos otros lenguajes de programación orientados a objetos (por ejemplo, Java , C ++ o Rubí).

Mecanografía

Usos Python tipificación de pato y ha escrito objetos sino los nombres de variables sin tipo. Tipo limitaciones no se comprueban en tiempo de compilación; más bien, las operaciones en un objeto pueden fallar, lo que significa que el objeto dado no es de un tipo adecuado. A pesar de ser tipos dinámicos, Python es inflexible de tipos, las operaciones que no están bien definidos que prohíbe (por ejemplo, la adición de un número en una cadena) en lugar de en silencio tratando de darles sentido.

Python permite que los programadores para definir sus propios tipos de uso clases, que se utilizan con mayor frecuencia para programación orientada a objetos. Nuevo instancias de clases son construidos por llamar a la clase (por ejemplo, SpamClass() o EggsClass() ), y las propias clases son instancias de la metaclase type (en sí misma una instancia de sí mismo), permitiendo metaprogramming y la reflexión.

Antes de la versión 3.0, Python tenía dos tipos de clases: "a la antigua" y "nuevo estilo". Clases de estilo antiguo fueron eliminados en Python 3.0, por lo que todas las clases de nuevo estilo. En versiones entre 2.2 y 3.0, se podrían utilizar los dos tipos de clases. La sintaxis de ambos estilos es lo mismo, la diferencia es si la clase object se hereda, directa o indirectamente (todas las clases de nuevo estilo heredan de object y son instancias de type ).

He aquí un resumen de los tipos incorporados de Python:

Tipo Descripción Ejemplo de sintaxis
str Una secuencia inmutable de caracteres. En Python 2, las cadenas son una secuencia de caracteres. Cadenas Unicode necesitan ser declarados mediante un prefijo con la letra u. En Python 3 cadenas son Unicode de manera predeterminada. 'Wikipedia'
"Wikipedia"
"" "Que abarca
múltiples
líneas "" "
bytes Una secuencia inmutable de bytes b'Some ASCII '
b "Algunos ASCII"
lista Mutable, puede contener tipos mixtos [4.0, 'cadena', True]
tupla Inmutable, puede contener tipos mixtos (4,0, 'cadena', True)
set , frozenset Desordenada, no contiene duplicados. Un frozenset es inmutable. {4.0, 'cadena', True}
frozenset ([4,0, 'cadena', True])
dict Un grupo mutable de pares de clave y valor {'Key1': 1,0, 3: Falso}
int Un inmutable número de precisión fija de magnitud ilimitada 42
flotador Un inmutable número de punto flotante (precisión definida por el sistema) 3.1415927
complejo Un inmutable número complejo con números reales y partes imaginarias 3 + 2.7j
bool Un valor de verdad inmutable Cierto
Falso

Matemáticas

Python define el operador de módulo de manera que el resultado de a % b está en el intervalo abierto [0,b) , donde b es un número entero positivo. (Cuando b es negativo, el resultado está en el intervalo (a, 0]). Esta es la forma habitual de definir la operación de módulo en matemáticas. Sin embargo, en consecuencia, esto afecta la forma entero división se define. Para mantener la validez de la ecuación b * (a // b) + a % b = a , división entera se define para redondear hacia menos infinito. Por lo tanto 7 // 3 es 2, pero (−7) // 3 es -3. Esto es diferente de muchos lenguajes de programación, cuando el resultado de la división entera redondea hacia cero y el operador de módulo se define en consecuencia, de una manera que puede devolver los números negativos.

Python proporciona una round función para redondeo flota a enteros. Versión 2.6.1 y menor uso de ida y lejos del cero: round(0.5) es de 1,0, round(-0.5) es -1,0. Versión 3.0 y el uso más alto asaltos a -incluso: round(1.5) es 2.0, round(2.5) es 2,0. El Decimal tipo / clase en el módulo decimal (desde la versión 2.4) ofrece representación numérica exacta y varios modos de redondeo.

Python permite expresiones booleanas con múltiples relaciones de igualdad en una manera que sea consistente con el uso general en matemáticas. Por ejemplo, la expresión a < b < c comprueba si a es menor que b y b es menor que c . Lenguajes C derivado interpretan esta expresión diferente: en C, la expresión sería primero evaluar a < b , lo que resulta en 0 ó 1, y ese resultado sería entonces compararse con c .

Implementaciones

CPython

La implementación de Python corriente principal, conocida como CPython, está escrito en C reunión del Estándar C89. CPython compila programas Python en intermedia código de bytes, que luego se ejecuta la máquina virtual. Se distribuye con una biblioteca estándar grande escrito en una mezcla de C y Python. Barcos CPython en versiones para muchas plataformas, incluyendo Microsoft Windows y más moderno Sistemas tipo Unix. CPython fue pensado desde casi su misma concepción para ser multiplataforma; su utilización y desarrollo en plataformas esotéricas como Amoeba, queridos junto a más convencionales como Unix y Mac OS, ha ayudado mucho en este sentido.

Stackless Python es un tenedor significativo de CPython que implementa microrroscas; que no utiliza la pila de memoria C. Se puede esperar para ejecutarse en aproximadamente las mismas plataformas que se ejecuta en CPython.

Google comenzó un proyecto llamado Trago des en 2009 con los objetivos de aumentar la velocidad de la intérprete de Python por 5 veces y la mejora de su capacidad multithreading para escalar a miles de núcleos.

Implementaciones alternativas

Jython compila el programa Python a código de bytes de Java, que puede ser ejecutado por cada Java Virtual Machine aplicación. Esto también permite el uso de funciones de biblioteca de clases de Java del programa Python. IronPython sigue un enfoque similar con el fin de ejecutar los programas en Python sobre .NET Common Language Runtime. PyPy es un experimental aplicación autoalojamiento de Python, escrito en Python, que permite la salida de varios tipos de código de bytes, código objeto y idiomas intermedios. También existen los compiladores a alto nivel objetar idiomas, ya sea con Python sin restricciones, un subconjunto restringido de Python, o un lenguaje similar a Python como el idioma de origen. PyPy es de este tipo, la compilación RPython a varios idiomas; otros ejemplos incluyen Pijamas para compilar JavaScript; Shed Skin compilación de C ++ ; y Cython y Pyrex compilación de C .

En el año 2005 Nokia lanzó un intérprete de Python para la Serie 60 teléfonos móviles llamadas PyS60. Incluye muchos de los módulos de las implementaciones CPython y algunos módulos adicionales para la integración con la Sistema operativo Symbian. Este proyecto se ha mantenido al día para funcionar en todas las variantes de la plataforma S60 y hay varios módulos de terceros disponibles. El Nokia N900 también es compatible con Python gtk ventanas bibliotecas, con la característica de que los programas pueden ser escritas y ejecutar en el propio dispositivo. También hay un intérprete de Python para Dispositivos Windows CE (incluyendo Pocket PC). Se llama PythonCE. Existen herramientas adicionales disponibles para una fácil aplicación y desarrollo GUI.

La máquina virtual PyMite comenzó en 2000 e hizo su primera aparición pública en PyCon 2003. PyMite fue doblado en Python-on-a-Chip en 2009. Python-on-a-Chip (p14p) es un proyecto para desarrollar una máquina virtual de Python reducida (con nombre en código PyMite) que se ejecuta un subconjunto significativo del lenguaje Python en microcontroladores sin un sistema operativo en tan menos de 4 KB de RAM.

Alrededor de 2004, el Proyecto Pyastra creó un traductor especializado y ensamblador que se dirige limitado-recurso muy microcontroladores.

ChinesePython (中蟒) es un lenguaje de programación Python usando léxico de la lengua china. Además de las palabras reservadas y nombres de variables, la mayoría de las operaciones de tipo de datos pueden ser codificados en chino también.

Semántica de interpretación

La mayoría de las implementaciones de Python (incluyendo CPython ) puede funcionar como un intérprete de línea de comandos, por lo que el usuario entra en declaraciones secuencialmente y reciba los resultados de inmediato. En resumen, Python actúa como shell. Mientras que la semántica de los otros modos de ejecución (compilación de código de bytes, o compilación a código nativo) conservan la semántica secuenciales, ofrecen un aumento de velocidad a costa de la interactividad, por lo que sólo se usan fuera de una interacción de línea de comandos (por ejemplo, , al importar un módulo).

Otros conchas agregar capacidades más allá de los de la intérprete básica, incluyendo IDLE y IPython. Aunque, en general siguiendo el estilo visual de la terminal de Python, implementan características como auto-realización, la retención de estado de la sesión, y resaltado de sintaxis.

Algunas implementaciones pueden compilar no sólo a código de bytes, pero puede convertir en código Python código de máquina. Hasta ahora, esto sólo se ha hecho para subconjuntos restringidos de Python. PyPy toma este enfoque, nombrando a su versión restringida compilable de Python RPython.

Psyco es una especializada sólo en el compilador tiempo que se integra con CPython y transforma bytecode a código máquina en tiempo de ejecución. El código producido es especializada para determinados tipos de datos y es más rápido que el código Python estándar. Psyco es compatible con todo el código Python, no sólo un subconjunto.

Desarrollo

Desarrollo Python se lleva a cabo en gran parte a través del proceso de Python Enhancement Proposal (PEP). PEP son documentos de diseño estandarizadas que proporcionan información general relacionada con Python, incluyendo propuestas, descripciones, fundamentos de diseño, y las explicaciones de las características del lenguaje. PEP pendientes son revisados y comentados por Van Rossum, el proyecto de Python BDFL (líder / idioma arquitecto). Desarrolladores de CPython también se comunican a través de una lista de correo, python-dev, que es el principal foro de debate sobre el desarrollo del lenguaje; cuestiones específicas se discuten en el Redondeo bug tracker mantiene a python.org. Desarrollo lleva a cabo en el alojada auto- svn.python.org.

Comunicados públicos de CPython vienen en tres tipos, que se distinguen por el cual parte del número de versión se incrementa:

  • versiones hacia atrás-incompatibles, donde se espera un código de romper y debe ser manualmente portado. La primera parte del número de versión se incrementa. Estas liberaciones ocurren con poca frecuencia, por ejemplo, la versión 3.0 fue lanzado 8 años después de 2.0.
  • versiones principales o "característica", que son en gran medida compatibles pero introducen nuevas características. La segunda parte del número de versión se incrementa. Estos lanzamientos están programados para aparecer más o menos cada 18 meses, y cada versión principal es apoyada por correcciones de errores durante varios años después de su lanzamiento.
  • comunicados de corrección de errores, que introducen nuevas características pero corrigen determinados fallos. La tercera y última parte del número de versión se incrementa. Estos lanzamientos se hacen cada vez que un número suficiente de errores han sido corregidos aguas arriba desde la última versión, o más o menos cada 3 meses. Las vulnerabilidades de seguridad también están revisados en los comunicados de corrección de errores.

Un numero de alfa, beta y liberar-candidatos también son liberados como vistas previas y para las pruebas antes de hacer el lanzamiento final. Aunque hay un calendario aproximado para cada lanzamiento, este es empujado a menudo de nuevo si el código no está listo. El equipo de desarrollo de monitorear el estado del código ejecutando el gran suite de prueba de la unidad durante el desarrollo, y el uso de la BuildBot sistema de integración continua.

Biblioteca estándar

Python tiene una biblioteca estándar grande, comúnmente citado como una de las mayores fortalezas de Python, proporcionando herramientas pre-escritos adecuados a muchas tareas. Esto es deliberado y ha sido descrito como un "baterías incluidas" filosofía de Python. Los módulos de la librería estándar se pueden aumentar con módulos personalizados escritos en C o Python. Impulsar bibliotecas de C ++ incluye una biblioteca, Boost.Python, para permitir la interoperabilidad entre C ++ y Python. Debido a la amplia variedad de herramientas proporcionadas por la librería estándar, combinado con la capacidad de utilizar un lenguaje de nivel inferior, tal como C y C ++, que ya es capaz de interactuar entre otras bibliotecas, Python puede ser un poderoso idioma pegamento entre lenguajes y herramientas.

La librería estándar está particularmente bien adaptado a la escritura de aplicaciones orientados a Internet, con un gran número de formatos y protocolos estándar (tales como MIME y HTTP) ya soportado. Módulos para crear interfaces gráficas de usuario, que se conectan a bases de datos relacionales, la aritmética con decimales de precisión arbitraria, manipulando expresiones regulares, y haciendo También se incluyen las pruebas unitarias.

Algunas partes de la biblioteca estándar están cubiertos por las especificaciones (por ejemplo, el Aplicación WSGI wsgiref sigue PEP 333), pero la mayoría de los módulos no lo son. Se especifican por su código, documentación interna, y banco de pruebas (si se incluye). Sin embargo, debido a la mayor parte de la biblioteca estándar es de código Python multiplataforma, sólo hay unos pocos módulos que deben ser modificadas o completamente reescritos por implementaciones alternativas.

La biblioteca estándar no es esencial para ejecutar Python o incrustarla Python dentro de una aplicación. Blender 2.49, por ejemplo, omite la mayor parte de la biblioteca estándar.

Para las pruebas de software, la biblioteca estándar proporciona la unittest y doctest módulos.

Influencias en otros idiomas

Diseño y la filosofía de Python han influido en varios lenguajes de programación, incluyendo:

  • Pyrex y su derivado Cython son traductores de código que están dirigidos a escribir extensiones en C rápidas para el intérprete CPython. El lenguaje es en su mayoría Python con extensiones de sintaxis para C y C ++ características. Ambas lenguas producen código C compilable como salida.
  • Boo utiliza indentación, una sintaxis similar, y un modelo de objeto similar. Sin embargo, Boo utiliza tipos estáticos y está estrechamente integrado con el NET Framework.
  • Cobra utiliza sangría y una sintaxis similar. "Agradecimientos" documento de Cobra enumera Python primera entre las lenguas que influyeron en él. Sin embargo, Cobra apoya directamente diseñar por contrato, pruebas unitarias y opcional tipos estáticos.
  • ECMAScript prestado iteradores, generadores, y listas por comprensión de Python.
  • Go se describe como la incorporación de la "velocidad de desarrollo de trabajar en un lenguaje dinámico como Python".
  • Groovy fue motivada por el deseo de llevar la filosofía de diseño de Python a Java .
  • OCaml tiene una sintaxis opcional, llamada TWT (el espacio en blanco Cosa), inspirada en Python y Haskell.

Prácticas de desarrollo de Python también han sido emulado por otros idiomas. La práctica de exigir un documento que describe la razón de ser, y las cuestiones de los alrededores, un cambio en el lenguaje (en el caso de Python, una PEP) también se utiliza en Tcl y Erlang por la influencia de Python.

Recuperado de " http://en.wikipedia.org/w/index.php?title=Python_(programming_language)&oldid=411022789 "