Pythones uncuya filosofía hace hincapié en la legibilidad de su. Se trata de un lenguaje de programación, puesto que aguanta,y, en menor medida,. Es un,y.
Es administrado por la. Posee una licencia de, denominada, que es compatible con laa partir de la versión dos.1.1, e incompatible en ciertas versiones anteriores.
Python fue creado a finales de los ochenta poren el Centro para las Matemáticas y la Informática (CWI, ), en los, como un sucesor del, capaz dee interaccionar con el.
El nombre del lenguaje proviene de la afición de su autor por los humoristas británicos.
Van Rossum es el primordial autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como (en inglés: Benevolent Dictator for Life, BDFL); sin embargo el 12 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 mil novecientos noventa y uno, 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 excepciones,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 semejante al de Modula-3, con la adición de una cláusula
else
.
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 conjunto de usuarios de este lenguaje.
Python alcanzó la versión 1.0 en el mes de enero de 1994. Una característica de este lanzamiento fueron las herramientas de la:
,
reduce
,
filter
y
map
. Van Rossum explicó que «hace 12 años, Python adquirió lambda, reduce(), filter() y map(), cortesía de un hacker 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 1.2. En 1995, van Rossum continuó su trabajo en Python en la(CNRI) en Reston,, donde lanzó múltiples versiones del.
Durante su estancia en CNRI, van Rossum lanzó la iniciativa Computer Programming for Everybody(CP4E), con el objetivo de hacer la programación más alcanzable 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 precursor, ABC. El proyecto fue patrocinado por. En el año dos mil siete, el proyecto CP4E está inactivo, y mientras Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, alcanzando a los no-programadores, no es una preocupación activa.
En el año 2000, el equipo primordial de desarrolladores de Python se cambió apara formar el equipo BeOpen. CNRI pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta 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 dos.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 similar 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 dos.0 introdujo además un sistema decapaz de recoger 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 utilizar Python con software disponible bajoera muy deseable. La licencia utilizada entonces, la, incluía una cláusula estipulando 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 cambiar la licencia de software libre de Python para hacerla compatible con GPL. En el año dos mil uno, van Rossum fue premiado con.
Python dieciseis.1 es fundamentalmente exactamente el mismo que Python 1.6, con unos pocos arreglos de, y con una nueva licencia compatible con GPL.
Python 2.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 dos.1, tiene como dueño a(PSF), una organización sin ánimo de lucro fundada en el año dos mil uno, tomando como modelo la. Incluido en este lanzamiento fue una implementación del scoping más parecida a las reglas de(del cuales el originador).
Una innovación mayor en Python 2.2 fue la unificación de los tipos 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 sumes a la biblioteca estándar de Python y las resoluciones sintácticas fueron influenciadas fuertemente poren algunos casos: el package
logging
,
introducido en la versión dos.3, está basado en; el parser, introducido en dos.0; el package
threading
,
cuya clase
Threadexpone un subconjunto de la interfaz de la clase homónima en Java.
Python dos, o sea Python dos.7.x, fue oficialmente descontinuado el 1 de enero de dos mil veinte (primero planeado para 2015) después de lo cual 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.
Back to top1) Características y paradigmas
Python es un lenguaje de programación. Esto quiere decir que más que forzar a los programadores a adoptar un estilo particular de programación, deja varios estilos:,y. Otros paradigmas están soportados mediante el uso de extensiones.
Python usaypara la administración de memoria.
Una característica importante de Python es la resolución dinámica de nombres; esto es, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado link dinámico de métodos).
Otro objetivo del diseño del lenguaje es la sencillez 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 ciertas 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 de manera frecuente a la filosofía de Pythonque es bastante análoga a la filosofía de. El código que prosiga los principios de Python diríase 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 nunca 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 preferentemente solo una— forma obvia de hacerlo.
- Aunque esa forma puede no ser obvia al principio 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 gran idea.
- Los espacios de nombres ( namespaces) son una buena idea ¡Hagamos más de esas cosas!
Desde la versión dos.1.2, Python incluye estos puntos (en su versión original en inglés) como unque se muestra al ejecutar
import this
.
2) Modo interactivo
El intérprete de Python estándar incluye un modo interactivoen el que 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 manera 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 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:
Back to top3) Elementos del lenguaje
Python fue diseñado para ser leído con facilidad. 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 escriben
not
,
or
y
and
, respectivamente. Curiosamente el lenguajees junto conuno de los lenguajes con muy clara sintaxis y los dos son de la década del setenta. La idea del código claro y legible no es algo nuevo.
El contenido de los bloques de código (bucles, funciones, clases, etcétera) es acotado mediante espacios o tabuladores, conocidos como, antes de cada línea de órdenes pertenecientes al bloque.
Python se distingue así de otros lenguajes de programación que mantienen como costumbre declarar los bloques mediante un conjunto de caracteres, por norma general entre llaves
.
Se pueden utilizar tanto espacios como tabuladores para indentar el código, mas se aconseja no mezclarlos.
Debido al significado sintáctico de la indentación, cada instrucción ha de estar contenida en una línea. No obstante, 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 indica que la instrucción continúa en la siguiente.
Estas instrucciones son equivalentes:
3.1) Comentarios
Los
comentariosse pueden poner de 2 formas. La primera y más apropiada para comentarios largos es utilizando la notación ''' comentario ''', tres apóstrofos de apertura y tres 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 deseamos poner información auxiliar en el código. Por poner un ejemplo, una explicación sobre el comportamiento de una sección del programa.
Las
variablesse definen de forma, lo que quiere decir que no se tiene que especificar cuál es su tipo de antemano y puede tomar distintos valores en otro instante, incluso 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 comenzar 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
3.2) Tipos de datos
Los tipos de datosse pueden resumir en esta tabla:
- Mutable: si su contenido (o dicho valor) puede cambiarse en tiempo de ejecución.
- Inmutable: si su contenido (o bien dicho valor) no puede mudarse en tiempo de ejecución.
3.3) Condicionales
Una(
if) ejecuta suinterno solo si se cumple cierta condición. Se define utilizando la palabra clave
if
seguida de la condición, y el bloque de código. Condiciones auxiliares, si las hay, se introducen usando
elif
seguida de la condición y su bloque de código. Todas las condiciones se evalúan secuencialmente hasta hallar 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 clave
else
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 clave
for
seguida de un nombre de variable, seguido de
in
, seguido del iterable, y finalmente el bloque de código interno. En todos y cada iteración, el elemento siguiente del iterable se asigna al nombre de variable especificado:
3.4) Bucle while
El bucleevalúa una condición y, si es verdadera, ejecuta el bloque de código interno. Continúa valorando y ejecutando mientras que la condición sea verdadera. Se define con la palabra clave
while
seguida de la condición, y a continuación el bloque de código interno:
3.5) Listas y Tuplas
- Para declarar una
listase emplean los corchetes
, en cambio, para declarar una tuplase utilizan los paréntesis
()
. En las dos los elementos se apartan por comas, y en el caso de las tuplases necesario 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 diferentes en cantidad fija.
- Para acceder a los elementos de una listao tuplase usa un índice entero (comenzando por "0", no por "1"). Se pueden usar í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 puesto que no es posible alterar el contenido una vez creada.
3.6) Diccionarios
- Para declarar un
diccionariose utilizan las llaves
. Contienen elementos separados por comas, donde cada elemento está formado por un par
clave:valor
(el símbolo:
separa la clave de su valor pertinente). - Los
diccionariosson mutables, es decir, se puede cambiar el contenido de un
valor
en tiempo de ejecución. - En cambio, las
claves
de un diccionariodeben ser inmutables. Esto quiere decir, por ejemplo, que no podremos usar ni listasni diccionarioscomoclaves
. - El
valor
asociado a unaclave
puede ser de cualquier tipo de dato, aun un diccionario.
3.7) Sentencia Switch Case
Si bien Python no tiene la estructura Switch, hay varias formas de realizar la operación típica que realizaríamos con una sentencia switch case.
3.7.1) Usando if, elif, else
Podemos utilizar la estructura de la próxima manera:
En esa estructura se ejecutase controlando la condicion1, si no se cumple pasara a la próxima y así sucesivamente 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 larguísima, las debe recorrer una por una hasta llegar a la adecuada.
3.7.2) Usando diccionario
Podemos utilizar un diccionario para exactamente el mismo ejemplo:
De esta manera, si las opciones fuesen muchas, no recorrería todas; solo iría de forma directa a la operación buscada en la última línea .get(op, lambda: None)()estamos dando la opción por defecto.
- Los
conjuntosse construyen a través de
set(items)
donde itemses cualquier objeto iterable, como listaso tuplas. Los conjuntosno mantienen el orden ni contienen elementos duplicados. - Se acostumbran a utilizar para quitar duplicados de una secuencia, o bien para operaciones matemáticas como,,y.
3.8) Listas por comprensión
Una
lista por comprensión(en inglés: list comprehension) es una expresión compacta para acotar
listas. Del mismo modo que
lambda
, aparece en lenguajes funcionales. Ejemplos:
- Las
funcionesse definen con la palabra clave
def
, seguida del nombre de la funcióny sus parámetros. Otra forma de redactar funciones, aunque menos empleada, es con la palabra clavelambda
(que aparece en lenguajes funcionales como). - El valor devuelto en las
funcionescon
def
será el dado con la instrucciónreturn
.
def
:
lambda
:
- Las
clasesse definen con la palabra clave
class
, seguida del nombre de la clasey, side otra clase, el nombre de esta. - En Python 2.x era recomendable que una clase heredara 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 usa generalmente para inicializar atributos y ejecutar métodos precisos. De la misma manera que todos los métodos en Python, debe tener al menos un parámetro, por norma general se usa
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 utilizando
self.
delante del nombre. - En Python no existe el concepto de encapsulación, con lo que el programador debe ser responsable de asignar los valores a los atributos
Existen muchas propiedades que se pueden añadir al lenguaje importando módulos, que son "minicódigos" (la mayoría escritos también en Python) que proveen de ciertas funciones y clases para efectuar determinadas labores. Un caso es el módulo
, que deja 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 añaden a los códigos escribiendo
import
seguida del nombre del módulo que deseemos emplear.
3.9) Interfaz al sistema operativo
El módulo osprovee funciones para interactuar con el sistema operativo:
Para tareas de administración de archivos, el módulo shutilprovee una interfaz de más alto nivel:
3.10) Comodines de archivos
El módulo globprovee una función para crear listas de archivos a partir de búsquedas con comodines en carpetas:
3.11) Argumentos de línea de órdenes
Los razonamientos de línea de órdenes se guardan 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 utiliza para efectuar escojas al azar:
El módulo statisticsse usa para estadística básica, por ejemplo: media, mediana, varianza, etc.:
3.12) Fechas y Tiempos
El módulo datetimepermite manejar fechas y tiempos:
Back to top4) Sistema de objetos
En Pythontodo es un objeto(incluso las). Las clases, siendo objetos, son instancias de una. Pythonademás soportay.
Back to top5) Biblioteca estándar
Python viene con "pilas incluidas"
Python tiene una enorme biblioteca estándar, usada 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 adaptados escritos tanto en C como en Python. Debido a la enorme variedad de herramientas incluidas en la biblioteca estándar, combinada con la habilidad de usar 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.
Back to top6) Implementaciones
Existen diferentes implementaciones del lenguaje:
- es la implementación original, disponible para varias plataformas en el lugar oficial de Python.
- es la implementación para .NET
- es la variante de CPython que trata de no emplear el stackde()
- es la implementación hecha en
- es la implementación efectuada para Palm ()
- es una implementación de Python escrita en Python y optimizada 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.
7) Incidencias
A lo largo de su historia, Python ha presentado una serie de incidencias, de las cuales las más importantes han sido las siguientes:
- El 13 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 junto con Python tres se ha publicado una herramienta automática llamada 2to3.
- En el sistema operativo, a partir de su actualización de mayo de 2019, dispone de la característica de preinstalación asistida del lenguaje Python y múltiples de sus herramientas adicionales.
8) Véase también
Back to top9) Referencias
Back to top10) Bibliografía
- Knowlton, Jim (dos mil nueve). Python. tr: Fernández Vélez, María Jesús (1 edición). Anaya Multimedia-Anaya Interactiva. .
- Martelli, Alex (2007). Python. Guía de referencia. tr: Gorjón Salvador, Bruno (1 edición). Anaya Multimedia-Anaya Interactiva. .