Se trata de un lenguaje de programación, puesto que aguanta,y, en menor medida,. Es un,y.
Es administrado por la. Tiene una licencia de, denominada,
que es compatible con laa partir de la versión 2.1.1, e incompatible en ciertas versiones precedentes.
Python fue creado a fines de los ochenta
poren el Centro para las Matemáticas y la Informática (CWI,
), en los, como un sucesor del, capaz dee interactuar con el.
El nombre del lenguaje procede de la afición de su creador por los humoristas británicos.
Van Rossum es el principal autor de Python, y su progresivo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como
(en inglés:
Benevolent Dictator for Life, BDFL); no obstante el doce de julio de 2018 declinó de dicha situación de honor sin dejar un sucesor o sucesora y con una declaración altisonante:
Entonces, ¿qué harán todos ? ¿Crear una democracia? ¿Anarquía? ¿Una dictadura? ¿Una federación?
En 1991, van Rossum publicó el código de la versión 0.9.0 en.
En esta etapa del desarrollo ya estaban presentes clases con, manejo de salvedades,y los tipos modulares, como:str
,list
,dict
, entre otros muchos. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de; van Rossum describe el módulo como «una de las mayores unidades de programación de Python».
El modelo de salvedades en Python es parecido al de Modula-tres, con la adición de una cláusulaelse
.
En el año mil novecientos noventa y cuatro se formó, el foro de discusión primordial de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje.
Python alcanzó la versión 1.0 en el primer mes del año de 1994. Una característica de este lanzamiento fueron las herramientas de la:
,reduce
,filter
ymap
. Van Rossum explicó que «hace doce años, Python adquirió lambda, reduce(), filter() y map(), cortesía de un pirata informático informático deque las extrañaba y que envió parches».
El donante fue Amrit Prem; no se hace ninguna mención específica de cualquier herencia de Lisp en las notas de lanzamiento.
La última versión liberada proveniente de CWI fue Python doce. En 1995, van Rossum continuó su trabajo en Python en la(CNRI) en Reston,, donde lanzó varias versiones del.
Durante su estancia en CNRI, van Rossum lanzó la iniciativa
Computer Programming for Everybody(CP4E), con el fin de hacer la programación más accesible a más gente, con un nivel de 'alfabetización' básico en lenguajes de programación, afín a la alfabetización básica en inglés y habilidades matemáticas precisas por muchos trabajadores. Python tuvo un papel vital en este proceso: debido a su orientación cara una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por.
En el año 2007, el proyecto CP4E está inactivo, y mientras Python intenta ser fácil de aprender y no muy misterio en su sintaxis y semántica, alcanzando a los no-programadores, no es una preocupación activa.
En el año 2000, el equipo principal de desarrolladores de Python se cambió apara formar el equipo BeOpen. CNRI pidió que la versión dieciseis fuera pública, continuando su desarrollo hasta el momento en que el equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la versión 2.0 tenían una significativa cantidad de traslapo.
Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores de PythonLabs se unieron en.
Python 2.0 tomó una característica mayor del lenguaje de: listas por comprensión. La sintaxis de Python para esta construcción es muy afín a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves alfabéticas. Python 2.0 introdujo además un sistema decapaz de recolectar referencias cíclicas.
Posterior a este doble lanzamiento, y después que van Rossum dejó CNRI para trabajar con desarrolladores de software comercial, quedó claro que la opción de usar Python con software libre bajoera muy deseable. La licencia utilizada entonces, la, incluía una cláusula estableciendo que la licencia estaba regida por el estado de, por lo que, bajo la óptica de los abogados de(FSF), se hacía incompatible con GPL. CNRI y FSF se relacionaron para mudar la licencia de servicios posicionamiento web de Python para hacerla compatible con GPL. En el año 2001, van Rossum fue premiado con.
Python 1.6.1 es esencialmente el mismo que Python dieciseis, con unos pocos arreglos de, y con una nueva licencia compatible con GPL.
Python dos.1 fue un trabajo derivado de Python dieciseis.1, así como también de Python 2.0. Su licencia fue renombrada a:. Todo el código, documentación y especificaciones añadidas, desde la data del lanzamiento de la versión alfa de Python 2.1, tiene como dueño a(PSF), una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo la.
Incluido en este lanzamiento fue una implementación del scoping más semejante a las reglas de(del cuales el originador).
Una innovación mayor en Python dos.2 fue la unificación de los modelos en Python (tipos escritos en C), y clases (tipos escritos en Python) dentro de una jerarquía. Esa unificación logró un modelo de objetos de Python puro y consistente.
También fueron agregados losque fueron inspirados por el lenguaje.
Las adiciones a la biblioteca estándar de Python y las resoluciones sintácticas fueron influidas con fuerza poren ciertos casos: el packagelogging
,
introducido en la versión dos.3, está basado en; el parser, introducido en 2.0; el packagethreading
,
cuya clase
Threadexpone un subconjunto de la interfaz de la clase homónima en Java.
Python 2, es decir Python 2.7.x, fue oficialmente descontinuado el 1 de enero de 2020 (primero planeado para 2015) después de lo que no se publicarán parches de seguridad y otras mejoras para él.
Con el final del ciclo de vida de Python dos, solo tienen soporte la rama Python tres.5.x
y siguientes.
Python es un lenguaje de programación. Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, deja múltiples estilos:,y. Otros paradigmas están soportados mediante el uso de extensiones.
Python usaypara la administración de memoria.
Una característica esencial de Python es la resolución dinámica de nombres; es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado enlace dinámico de métodos).
Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos fácilmente eno. Python puede incluirse en aplicaciones que necesitan una interfaz programable.
Aunque la programación en Python podría considerarse en algunas situaciones hostil a la programación funcional tradicional del, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia Lisp como puede ser.
Los usuarios de Python se refieren con frecuencia a la
filosofía de Pythonque es bastante análoga a la filosofía de. El código que siga los principios de Python se dice que es "pythonico". Estos principios fueron descritos por el desarrollador de Pythonen
- Bello es mejor que feo.
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Disperso es mejor que denso.
- La legibilidad cuenta.
- Los casos singulares no son tan singulares para quebrantar las reglas.
- Lo práctico gana a lo puro.
- Los errores jamás deberían dejarse pasar sigilosamente.
- A menos que hayan sido silenciados explícitamente.
- Frente a la ambigüedad, rechaza la tentación de adivinar.
- Debería haber una —y preferiblemente solo una— forma obvia de hacerlo.
- Aunque esa manera puede no ser obvia al comienzo a menos que sea holandés.
- Ahora es mejor que jamás.
- Aunque
nuncaes frecuentemente mejor que
ya mismo. - Si la implementación es difícil de explicar, es una mala idea.
- Si la implementación es fácil de explicar, es posible que sea una buena idea.
- Los espacios de nombres (
namespaces) son una gran idea ¡Hagamos más de esas cosas!
Desde la versión 2.1.2, Python incluye estos puntos (en su versión original en inglés) como unque se muestra al ejecutarimport this
.
El intérprete de Python estándar incluye un
modo interactivoen el cual se escriben las instrucciones en una especie de: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación de forma inmediata, lo que da la posibilidad de probar porciones de código en el modo perfecto interactivo antes de integrarlo como una parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados.
Existen otros programas, tales como,o,
que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y eldel lenguaje.
Ejemplo del modo interactivo:
Python fue diseñado para ser leído con sencillez. Una de sus características es el empleo de palabras donde otros lenguajes utilizarían símbolos. Por servirnos de un ejemplo, los operadores lógicos!
,
y&&
en Python se escribennot
,or
yand
, respectivamente. Curiosamente el lenguajees junto conuno de los lenguajes con muy clara sintaxis y ambos son de la década del 70. La idea del código claro y inteligible no es algo nuevo.
El contenido de los bloques de código (bucles, funciones, clases, etc.) es acotado a través de espacios o bien tabuladores, conocidos como, ya antes de cada línea de órdenes pertenecientes al bloque.
Python se distingue así de otros lenguajes de programación que sostienen como costumbre declarar los bloques mediante un conjunto de caracteres, por norma general entre llaves
.
Se pueden usar tanto espacios como tabuladores para indentar el código, pero se aconseja no entremezclarlos.
Debido al significado sintáctico de la indentación, cada instrucción ha de estar contenida en una sola línea. Sin embargo, si por legibilidad se quiere dividir la instrucción en múltiples líneas, añadiendo una barra invertida\
al final de una línea, se señala que la instrucción continúa en la próxima.
Estas instrucciones son equivalentes:
Los
comentariosse pueden poner de 2 formas. La primera y más apropiada para comentarios largos es usando la notación ''' comentario ''', 3 apóstrofos de apertura y 3 de cierre. La segunda notación emplea el símbolo#
, y se extienden hasta el final de la línea.
El intérprete no tiene presente los
comentarios, lo cual es útil si queremos poner información adicional en el código. Por servirnos de un ejemplo, una explicación sobre el comportamiento de una sección del programa.
Las
variablesse definen de forma, lo que significa que no se debe especificar cuál es su tipo de antemano y puede tomar diferentes valores en otro momento, aun de un tipo diferente al que tenía previamente. Se emplea el símbolo=
para asignar valores.
Los nombres de variables pueden contener números y letras pero deben empezar por una letra, además existen 2. palabras reservadas:
and
assert
break
class
continue
def
del
elif
else
except
exec
finally
for
from
global
if
import
in
is
lambda
not
or
pass
print
raise
return
try
while
Los
tipos de datosse pueden resumir en esta tabla:
- Mutable: si su contenido (o dicho valor) puede mudarse en tiempo de ejecución.
- Inmutable: si su contenido (o bien dicho valor) no puede cambiarse en tiempo de ejecución.
Una(
if) ejecuta suinterno solo si se cumple cierta condición. Se define utilizando la palabra claveif
seguida de la condición, y el bloque de código. Condiciones adicionales, si las hay, se introducen usandoelif
seguida de la condición y su bloque de código. Todas y cada una de las condiciones se evalúan secuencialmente hasta localizar la primera que sea verdadera, y su bloque de código asociado es el único que se ejecuta. Opcionalmente, puede haber un bloque final (la palabra claveelse
seguida de un bloque de código) que se ejecuta solo cuando todas y cada una de las condiciones fueron falsas.
El bucle
fores similar aen otros lenguajes. Recorre un objeto iterable, como una
lista, una
tuplao un generador, y por cada elemento del iterable ejecuta el bloque de código interno. Se define con la palabra clavefor
seguida de un nombre de variable, seguido dein
, seguido del iterable, y por último el bloque de código interno. En cada iteración, el factor siguiente del iterable se asigna al nombre de variable especificado:
El bucleevalúa una condición y, si es verdadera, ejecuta el bloque de código interno. Continúa evaluando y ejecutando mientras la condición sea verdadera. Se define con la palabra clavewhile
seguida de la condición, y a continuación el bloque de código interno:
- Para declarar una
listase usan los corchetes
, en cambio, para declarar una
tuplase usan los paréntesis()
. En ambas los elementos se separan por comas, y en el caso de las
tuplases preciso que tengan como mínimo una coma. - Tanto las
listascomo las
tuplaspueden contener elementos de diferentes tipos. Sin embargo las
listassuelen usarse para elementos del mismo tipo en cantidad variable al tiempo que las
tuplasse reservan para elementos distintos en cantidad fija. - Para acceder a los elementos de una
listao
tuplase usa un índice entero (comenzando por "0", no por "1"). Se pueden emplear índices negativos para acceder elementos desde el final. - Las
listasse caracterizan por ser mutables, esto es, se puede cambiar su contenido en tiempo de ejecución, al paso que las
tuplasson inalterables ya que no es posible modificar el contenido una vez creada.
- Para declarar un
diccionariose emplean las llaves
. Poseen elementos separados por comas, donde cada elemento está formado por un parclave:valor
(el símbolo:
separa la clave de su valor pertinente). - Los
diccionariosson alterables, esto es, se puede cambiar el contenido de unvalor
en tiempo de ejecución. - En cambio, las
claves
de un
diccionariodeben ser inalterables. Esto quiere decir, por servirnos de un ejemplo, que no vamos a poder emplear ni
listasni
diccionarioscomoclaves
. - El
valor
asociado a unaclave
puede ser de cualquier
tipo de dato, aun un
diccionario.
Si bien Python no tiene la estructura Switch, hay varias formas de efectuar la operación típica que realizaríamos con una sentencia switch case.
Podemos utilizar la estructura de la próxima manera:
En esa estructura se ejecutara controlando la condicion1, si no se cumple pasase a la siguiente y así consecutivamente hasta entrar en el else.Un ejemplo práctico seria:
Podriamos decir que el lado negativo de la sentencia armada con if, elif y else es que si la lista de posibles operaciones es muy larga, las debe recorrer una por una hasta llegar a la adecuada.
Podemos emplear un diccionario para exactamente el mismo ejemplo:
De esta forma, si las opciones fuesen muchas, no recorrería todas; solo iría directamente a la operación buscada en la última línea
.get(op, lambda: None)()estamos dando la opción por defecto.
- Los
conjuntosse edifican medianteset(items)
donde
itemses cualquier objeto
iterable, como
listaso
tuplas. Los
conjuntosno mantienen el orden ni contienen elementos duplicados. - Se suelen emplear para quitar duplicados de una secuencia, o para operaciones matemáticas como,,y.
Una
lista por comprensión(en inglés: list comprehension) es una expresión compacta para delimitar
listas. Al igual quelambda
, aparece en lenguajes funcionales. Ejemplos:
- Las
funcionesse definen con la palabra clavedef
, seguida del nombre de la
funcióny sus parámetros. Otra forma de escribir
funciones, si bien menos utilizada, es con la palabra clavelambda
(que aparece en lenguajes funcionales como). - El valor devuelto en las
funcionescondef
será el dado con la instrucciónreturn
.
def
:
lambda
:
- Las
clasesse definen con la palabra claveclass
, seguida del nombre de la
clasey, side otra
clase, el nombre de esta. - En Python 2.x era aconsejable que una clase heredase de "Object", en Python tres.x ya no hace falta.
- En una
un "método" equivale a una "función", y un "atributo" equivale a una "variable". - "__init__" es un método especial que se ejecuta al instanciar la clase, se utiliza por norma general para iniciar atributos y ejecutar métodos necesarios. Al igual que todos y cada uno de los métodos en Python, debe tener al menos un parámetro, normalmente se utiliza
self
. El resto de parámetros serán los que se señalen al instanciar la
clase. - Los atributos que se desee que sean alcanzables desde fuera de la
clasese deben declarar utilizandoself.
delante del nombre. - En Python no existe el concepto de encapsulación,
por lo que el programador debe ser responsable de asignar los valores a los atributos
Existen muchas propiedades que se pueden agregar al lenguaje importando módulos, que son "minicódigos" (la mayoría escritos también en Python) que proveen de determinadas funciones y clases para efectuar determinadas tareas. Un caso es el módulo
, que permite crear interfaces gráficas basadas en la biblioteca. Otro ejemplo es el módulo
os, que provee acceso a muchas funciones del sistema operativo. Los módulos se agregan a los códigos escribiendoimport
seguida del nombre del módulo que deseemos emplear.
El módulo
osprovee funciones para interaccionar con el sistema operativo:
Para labores de administración de archivos, el módulo
shutilprovee una interfaz de más alto nivel:
El módulo
globprovee una función para crear listas de ficheros desde búsquedas con comodines en carpetas:
Los razonamientos de línea de órdenes se almacenan en el atributo argv del módulo
syscomo una lista.
El módulo
mathpermite acceder a las funciones de matemática de punto flotante:
El módulo
randomse usa para realizar selecciones al azar:
El módulo
statisticsse usa para estadística básica, por ejemplo: media, mediana, varianza, etc.:
El módulo
datetimepermite manejar fechas y tiempos:
En
Pythontodo es un
objeto(aun las). Las
clases, al ser
objetos, son instancias de una.
Pythonademás soportay.
Python viene con "pilas incluidas"
Python tiene una enorme biblioteca estándar, utilizada para una diversidad de labores. Esto viene de la filosofía "pilas incluidas" (
"batteries included") en referencia a los módulos de Python. Los módulos de la biblioteca estándar pueden mejorarse por módulos personalizados escritos tanto en C como en Python. Debido a la enorme pluralidad de herramientas incluidas en la biblioteca estándar, combinada con la habilidad de emplear lenguajes de bajo nivel como C y C++, los cuales son capaces de interactuar con otras bibliotecas, Python es un lenguaje que combina su clara sintaxis con el enorme poder de lenguajes menos muy elegantes.
Existen diversas implementaciones del lenguaje:
- es la implementación original, libre para múltiples plataformas en el lugar oficial de Python.
- es la implementación para .NET
- es la variante de CPython que trata de no usar el
stackde() - es la implementación hecha en
- es la implementación realizada para Palm ()
- es una implementación de Python escrita en Python y optimada mediante()
- es una implementación privativa de Python con extensiones, para servidores en producción y aplicaciones de misión crítica desarrollado por ActiveState Software.
A lo largo de su historia, Python ha presentado una serie de incidencias, de las cuales las más esenciales han sido las siguientes:
- El trece de febrero de dos mil nueve se lanzó una nueva versión de Python bajo el nombre clave
"Python 3000"o,
abreviado,
"Py3K".
Esta nueva versión incluye una serie de cambios que requieren reescribir el código de versiones anteriores. Para facilitar este proceso así como Python tres se ha publicado una herramienta automática llamada
2to3.
- En el sistema operativo, desde su actualización de mayo de 2019, dispone de la característica de preinstalación asistida del lenguaje Python y varias de sus herramientas auxiliares.
- diseño de paginas web ;rfr_id=info por cien 3Asid por cien 2Fes.wikipedia.org por cien 3APython&rft.au=Knowlton por cien 2C+Jim&rft.aufirst=Jim&rft.aulast=Knowlton&rft.btitle=Python&rft.date=2009&rft.edition=1&rft.genre=book&rft.isbn= &rft.pub=Anaya+Multimedia-Anaya+Interactiva&rft_val_fmt=info por ciento 3Aofi por cien 2Ffmt por cien 3Akev por ciento 3Amtx por ciento 3Abook">Knowlton, Jim (2009).
Python. tr: Fernández Vélez, María Jesús (1 edición). Anaya Multimedia-Anaya Interactiva.
. - Martelli, Alex (dos mil siete).
Python. Guía de referencia. tr: Gorjón Salvador, Bruno (1 edición). Anaya Multimedia-Anaya Interactiva.
.