Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
Python Python es un lenguaje lenguaje de programación programación interpretad interpretado o
Python
cuya cuya filo filoso sofí fía a hace hace hinc hincap apié ié en una una sint sintax axis is que que favorezca un código legible. Se
trata
de
un
lenguaje
de
programación
multiparadigma, ya que soporta orientación a objetos, prog progra rama maci ción ón
impe impera rati tiva va
y,
en
meno me norr
medi me dida da,,
programación funcional. s un lenguaje interpretado, usa tipado din!mico y es multiplataforma. s administrado por la "ython Soft#are $oundation. "ose "oseee una una lice licenci ncia a de códi código go abie abiert rto, o, deno denomi mina nada da "ytho "ython n
Soft Soft#a #are re
$oun $ounda dati tion on
%ice %icens nse, e,& qu que
compatible con la %icencia p'blica general de ()* a
Desarrollador(es)
partir partir de la versió versión n +.., +.., e incomp incompatib atible le en ciertas ciertas
Python Software Foundation
versiones anteriores.
Índice "istoria #aracter$sticas y paradigmas %ilosof$a &odo interactivo Elementos del lengua'e 1omentarios =ariables >ipos de datos 1ondicionales 7ucle for 7ucle while 8istas y >uplas
1 d 16
es
http://www.python.org/
Información general .py, .pyc, .pyd, .pyo, .pyw Extensiones comunes Multiparadigma: orientado Paradigma a objetos, imperativo, funcional, reflexivo Apareció en !! Diseñado por "uido van #ossum Última versión $.%.& ' (.%.)( *(% de junio estale de (&+ * d-as Última versión en prueas !istema de tipos
*/ de diciembre de (&% */ meses y (/ d-as
Fuertemente tipado, din0mico
Implementaciones 1Python, 2ronPython, 3ython, Python for S/&, PyPy, Pygame, 4ctivePython, 5nladen Swallow Stac6less Python, #Python Dialectos Influido por 471, 48"98 /+, 1, as6ell, 2con, 8isp, Modula;$, Perl, Smalltal6, 3ava "a influido a 7oo, 1obra, <, Falcon, "enie, "roovy, #uby,
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
4rgumentos de l-nea de ?rdenes Matem0tica Fechas y >iempos
https://es.wikipedia.org/wiki/Python
3avaScript, 1ython, "o
!istema de o'etos
!istema operativo Multiplataforma Python Software icencia Foundation 8icense
ilioteca est*ndar
Aeditar datos en Bi6idataC
Implementaciones Diferencias entre Python +,x y Python -,x ./ase tami/n 0eferencias iliograf$a Enlaces externos
Historia "ython fue creado a finales de los ochenta - por (uido van ossum en el /entro para las 0atem!ticas y la 1nform!tica 2/31, /entrum 3is4unde 5 1nformatica6, en los "aíses 7ajos, como un sucesor del lenguaje de programación 87/, capaz de manejar excepciones e interactuar con el sistema operativo 8moeba.9 l nombre del lenguaje proviene de la afición de su creador por los humoristas brit!nicos 0onty "ython.: ;an ossum es el principal autor de "ython, y su continuo rol central en decidir la dirección de "ython es reconocido, refiriéndose a él como Benevolente Dictador Vitalicio 2en inglés< Benevolent Dictator for Life, 7=$%6. n >>, van ossum publicó el código de la versión ?.>.? en alt.sources 2ne#s
"uido van #ossum, creador de Python, en la convenci?n 9S19D (&&/
dict, entre otros. 8dem!s en este lanzamiento inicial aparecía un sistema de módulos
adoptado de 0odulaA&B van ossum describe el módulo como Cuna de las mayores unidades de programación de "ythonD.- l modelo de excepciones en "ython es parecido al de 0odulaA&, con la adición de una cl!usula else.9 n el aEo >>- se formó comp.lang.python 2ne#s>-. *na característica de este lanzamiento fueron las herramientas de la programación funcional< lambda, reduce, filter y map. ;an ossum explicó que Chace + aEos, "ython adquirió lambda, reduce26, filter26 y map26, cortesía de un hac4er inform!tico de %isp que las extraEaba y que envió parchesD.F l donante fue 8mrit "remB no se hace ninguna mención específica de cualquier herencia de %isp en las notas de lanzamiento. %a 'ltima versión liberada proveniente de /31 fue "ython . +. n >>9, van ossum continuó su trabajo en "ython en la /orporation for )ational esearch 1nitiatives 2/)16 en eston, ;irginia, donde lanzó varias versiones del soft#are. =urante su estancia en /)1, van ossum lanzó la iniciativa Computer Programming for Everybody 2/"-6, con el fin de hacer la programación m!s accesible a m!s gente, con un nivel de GalfabetizaciónG b!sico en lenguajes de
d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
programación, similar a la alfabetización b!sica en inglés y habilidades matem!ticas necesarias por muchos trabajadores. "ython tuvo un papel crucial en este proceso< debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de /"- presentaban similitudes con su predecesor, 87/. l proyecto fue patrocinado por =8"8.> n el aEo +??@, el proyecto /"- est! inactivo, y mientras "ython intenta ser f!cil de aprender y no muy arcano en su sintaxis y sem!ntica, alcanzando a los noAprogramadores, no es una preocupación activa.? n el aEo +???, el equipo principal de desarrolladores de "ython se cambió a 7eHpen.com para formar el equipo 7eHpen "ython%abs. /)1 pidió que la versión .: fuera p'blica, continuando su desarrollo hasta que el equipo de desarrollo abandonó /)1B su programa de lanzamiento y el de la versión +.? tenían una significativa cantidad de traslapo. "ython +.? fue el primer y 'nico lanzamiento de 7eHpen.com. =espués que "ython +.? fuera publicado por 7eHpen.com, (uido van ossum y los otros desarrolladores de "ython%abs se unieron en =igital /reations. "ython +.? tomó una característica mayor del lenguaje de programación funcional Ias4ell< listas por comprensión. %a sintaxis de "ython para esta construcción es muy similar a la de Ias4ell, salvo por la preferencia de los caracteres de puntuación en Ias4ell, y la preferencia de "ython por palabras claves alfabéticas. "ython +.? introdujo adem!s un sistema de recolección de basura c apaz de recolectar referencias cíclicas. "osterior a este doble lanzamiento, y después que van ossum dejó /)1 para trabajar con desarrolladores de soft#are comercial, quedó claro que la opción de usar "ython con soft#are disponible bajo ()* ("% era muy deseable. %a licencia usada entonces, la "ython %icense, incluía una cl!usula estipulando que la licencia estaba gobernada por el estado de ;irginia, por lo que, bajo la óptica de los abogados de $ree Soft#are $oundation 2$S$6, se hacía incompatible con ("%. /)1 y $S$ se relacionaron para cambiar la licencia de soft#are libre de "ython para hacerla compatible con ("%. n el aEo +??, van ossum fue premiado con $S$ 8#ard for the 8dvancement of $ree Soft#are. "ython .:. es esencialmente el mismo que "ython .:, con unos pocos arreglos de bugs, y con una nueva licencia compatible con ("%.& "ython +. fue un trabajo derivado de "ython .:., así como también de "ython +.?. Su licencia fue renombrada a< "ython Soft#are $oundation
%icense.
Jodo
el
código,
documentación y especificaciones aEadidas, desde la fecha del lanzamiento de la versión alfa de "ython +., tiene como dueEo a "ython Soft#are $oundation 2"S$6, una organización sin !nimo de lucro fundada en el aEo +??, tomando como modelo la 8pache Soft#are $oundation.& 1ncluido en este lanzamiento fue una implementación del scoping m!s parecida a las reglas de static scoping 2del cual Scheme es el originador6.+
1?digo Python con coloreado de sintaxis.
*na innovación mayor en "ython +.+ fue la unificación de los tipos en "ython 2tipos escritos en /6, y clases 2tipos escritos en "ython6 dentro de una jerarquía. sa unificación logró un modelo de objetos de "ython puro y consistente.& Jambién fueron agregados los generadores que fueron inspirados por el lenguaje 1con. %as adiciones a la biblioteca est!ndar de "ython y las decisiones sint!cticas fueron influenciadas fuertemente por Kava en algunos casos< el pac4age logging,9 introducido en la versión +.&, est! basado en log-jB el parser S8L,
" d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
introducido en +.?B el pac4age threading,: cuya clase Thread expone un subconjunto de la interfaz de la clase homónima en Kava.
Características y paradigmas "ython es un lenguaje de programación multiparadigma. sto significa que m!s que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos< programación orientada a objetos, programación imperativa y programación funcional. Htros paradigmas est!n soportados mediante el uso de extensiones. "ython usa tipado din!mico y conteo de referencias para la administración de memoria. *na característica importante de "ython es la resolución din!mica de nombresB es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa 2también llamado enlace din!mico de métodos6. Htro objetivo del diseEo del lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos f!cilmente en / o /MM. "ython puede incluirse en aplicaciones que necesitan una interfaz programable. 8unque la programación en "ython podría considerarse en algunas situaciones hostil a la programación funcional tradicional del %isp, existen bastantes analogías entre "ython y los lenguajes minimalistas de la familia %isp como puede ser Scheme.
Filosofía %os usuarios de "ython se refieren a menudo a la Filosofía Python que es bastante an!loga a la filosofía de *nix. l código que sigue los principios de "ython de legibilidad y transparencia se dice que es NpythonicoN. /ontrariamente, el código opaco u ofuscado es bautizado como Nno pythonicoN 2NunpythonicN en inglés6. stos principios fueron descritos por el desarrollador de "ython Jim "eters en l Oen de "ython
7ello es mejor Eue feo. xpl-cito es mejor Eue impl-cito. Simple es mejor Eue complejo. 1omplejo es mejor Eue complicado. Plano es mejor Eue anidado.
# d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
Jim "eters, l Oen de "ython =esde la versión +..+, "ython incluye estos puntos 2en su versión original en inglés6 como un huevo de pascua que se muestra al ejecutar import this.F
Modo interactivo l intérprete de "ython est!ndar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos< las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. sto resulta 'til tanto para las personas que se
8a 84MP comprende Python *aEu- con SEuid
est!n familiarizando con el lenguaje como para los programadores m!s avanzados. xisten otros programas, tales como 1=% 2http que aEaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje. jemplo del modo interactivo< >>> 1 + 1 2 >>> a = range(10) >>> print( list(a) ) [0, 1, 2, 3, 4, , !, ", #,
%$Elementos del lenguaje "ython fue diseEado para ser leído con facilidad. *na de sus características es el uso de palabras donde otros lenguajes utilizarían símbolos. "or ejemplo, los operadores lógicos &, '' y en "ython se escriben not, or y and, respectivamente. /uriosamente el lenguaje "ascal es junto con /H7H% uno de los lenguajes con muy clara sintaxis y ambos son de la década del @?. %a idea del código claro y legible no es algo nuevo. l contenido de los bloques de código 2bucles, funciones, clases, etc.6 es delimitado mediante espacios o tabuladores, conocidos como indentación, antes de cada línea de órdenes pertenecientes al bloque. +? "ython se diferencia así de otros lenguajes de programación que mantienen como costumbre declarar los bloques mediante un conjunto de caracteres, normalmente entre llaves *.+ ++ Se pueden utilizar tanto espacios como tabuladores para indentar el código, pero se recomienda no mezclarlos.+&
%unción factorial opcional)
en
#
(indentación %unción factorial en Python (indentación oligatoria)
int factorial(int ) def factorial() assert >= 0 and - 1 == 0, . debe ser un entero ma/or o igual a 0. if ( 0 '' - 1 &= 0) printf(. debe ser un numero entero ma/or o if == 0 return 1 igual a 0.) return 1 //Error else * return factorial( 1)
5 d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
if ( == 0) return 1
* return factorial( 1)
*
=ebido al significado sint!ctico de la indentación, cada instrucción debe estar contenida en una sola línea. )o obstante, si por legibilidad se quiere dividir la instrucción en varias líneas, aEadiendo una barra invertida 5 al final de una línea, se indica que la instrucción contin'a en la siguiente. stas instrucciones son equivalentes<
lista=[67alor 16,67alor 26,67alor 36% cadena=68sto es una cadena bastante larga6
lista=[67alor 16,67alor 26 5 ,67alor 36% cadena=68sto es una cadena 6 5 6bastante larga6
#omentarios %os comentarios se pueden poner de dos formas. %a primera y m!s apropiada para comentarios largos es utilizando la notación GGG comentario GGG, tres apóstrofos de apertura y tres de cierre. %a segunda notación utiliza el símbolo 9, y se extienden hasta el final de la línea. l intérprete no tiene en cuenta los comentarios, lo cual es 'til si deseamos poner información adicional en el código. "or ejemplo, una explicación sobre el comportamiento de una sección del programa. ''' Comentario más largo en una línea en Python ''' print .:ola mundo. # También es posible añadir un comentario al final de una línea de cdigo
.ariales %as variables se definen de forma din!mica, lo que significa que no se tiene que especificar cu!l es su tipo de antemano y puede tomar distintos valores en otro momento, incluso de un tipo diferente al que tenía previamente. Se usa el símbolo = para asignar valores. = 1 = .teto. # Esto es posible por!ue los tipos son asignados dinámicamente
1ipos de datos %os tipos de datos se pueden resumir en esta tabla<
6 d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
1ipo
https://es.wikipedia.org/wiki/Python
#lase
2otas
E'emplo
str
1adena
2nmutable
unicode
1adena
=ersi?n 5nicode de str
u6;adena6
list
Secuencia
Mutable, puede contener objetos de diversos tipos
[40, 6;adena6,
tuple
Secuencia
2nmutable, puede contener objetos de diversos tipos
(40, 6;adena6,
set
1onjunto
Mutable, sin orden, no contiene duplicados
set([40, 6;adena6,
froenset
1onjunto
2nmutable, sin orden, no contiene duplicados
froenset([40,
dict
Mapping
"rupo de pares clave:valor
6e/16 ?alse*
int
DKmero entero
Precisi?n fija, convertido en long en caso de overflow.
42
long
DKmero entero
Precisi?n arbitraria
42@ ? 4!$!!"#!11$#"!43@
float
DKmero decimal
1oma flotante de doble precisi?n
comple
DKmero complejo
Parte real y parte imaginaria j .
(4 + 3A)
bool
7ooleano
=alor booleano verdadero o falso
6;adena6
10,
6;adena6,
6e/26
3141$2"
Mutable: si su contenido *o dicho valor puede cambiarse en tiempo de ejecuci?n. 2nmutable: si su contenido *o dicho valor no puede cambiarse en tiempo de ejecuci?n.
#ondicionales *na sentencia condicional 2if 6 ejecuta su bloque de código interno sólo si se cumple cierta condición. Se define usando la palabra clave if seguida de la condición, y el bloque de código. /ondiciones adicionales, si las hay, se introducen usando elif seguida de la condición y su bloque de código. Jodas las condiciones se eval'an secuencialmente hasta encontrar la primera que sea verdadera, y su bloque de código asociado es el 'nico que se ejecuta. Hpcionalmente, puede haber un bloque final 2la palabra clave else seguida de un bloque de código6 que se ejecuta sólo cuando todas las condiciones fueron falsas. >>> 7erdadero = >> if 7erdadero # "o es necesario poner $erdadero %% True print .Berdadero. else print .?also. Berdadero >>> lenguaAe = .C/thon. >>> if lenguaAe == .;. # lengua&e no es C por lo !ue este blo!ue se ob$iará y e$aluará la siguiente condicin print .@enguaAe de programaciDn ;. elif lenguaAe == .C/thon. # (e pueden añadir tantos blo!ues elif como se !uiera print .@enguaAe de programaciDn C/thon. else # En caso de !ue ninguna de las anteriores condiciones fuera cierta se e&ecutaría este blo!ue print .@enguaAe de programaciDn indefinido.
@enguaAe de programaciDn C/thon
7 d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
>>> if 7erdadero and lenguaAe == .C/thon. # )so de and para comprobar !ue ambas condiciones son $erdaderas print .Berdadero / @enguaAe de programaciDn C/thon.
Berdadero / @enguaAe de programaciDn C/thon
ucle for l bucle for es similar a foreach en otros lenguajes. ecorre un objeto iterable, como una lista, una tupla o 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. n cada iteración, el elemento siguiente del iterable se asi gna al nombre de variable especificado< >>> >>> a b c >>> >>>
lista = [.a., .b., .c.% for i in lista # *teramos sobre una lista !ue es iterable print i
cadena = .abcdef.
for i in cadena # *teramos sobre una cadena !ue también es iterable print i, # +ñadiendo una coma al final hacemos !ue no introdu,ca un salto de línea sino un espacio
a b c d e f
ucle 3hile l bucle while eval'a una condición y, si es verdadera, ejecuta el bloque de código interno. /ontin'a evaluando y ejecutando mientras la condición sea verdadera. Se define con la palabra clave Ehile seguida de la condición, y a continuación el bloque de código interno< >>> numero = 0 >>> while numero 10 print numero, numero += 1 #un buen programador modificará las $ariables de control al finali,ar el ciclo -hile 0 1 2 3 4 ! " # $
istas y 1uplas Para declarar una lista se usan los corchetes [%, en cambio, para declarar una tupla se usan los parHntesis (). n ambas los elementos se separan por comas, y en el caso de las tuplas es necesario Eue tengan como m-nimo una coma. >anto las listas como las tuplas pueden contener elementos de diferentes tipos. Do obstante las listas suelen usarse para elementos del mismo tipo en cantidad variable mientras Eue las tuplas se reservan para elementos distintos en cantidad fija. Para acceder a los elementos de una lista o tupla se utili@a un -ndice entero *empe@ando por L&L, no por LL. Se pueden utili@ar -ndices negativos para acceder elementos a partir del final. 8as listas se caracteri@an por ser mutables, es decir, se puede cambiar su contenido en tiempo de ejecuci?n, mientras Eue las tuplas son inmutables ya Eue no es posible modificar el contenido una ve@ creada.
istas >>> lista = [.abc., 42, 3141% >>> lista[0% # +cceder a un elemento por su índice
! d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
6abc6 >>> lista[1% # +cceder a un elemento usando un índice negati$o 3141 >>> listaappend(>> lista [6abc6, 42, 3141, >> del lista[3% # .orra un elemento de la lista usando un índice en este caso0 True1 >>> lista[0% = ./. # 2e3asignar el $alor del primer elemento de la lista >>> lista[02% # 4ostrar los elementos de la lista del índice 5 al 6 sin incluir este 7ltimo1 [6/6, 42% >>> listaFanidada = [lista, [>> listaFanidada [[6/6, 42, 3141%, [>> listaFanidada[1%[0% # +cceder a un elemento de una lista dentro de otra lista del segundo elemento mostrar el primer elemento1
1uplas >>> tupla = (.abc., 42, 3141) >>> tupla[0% # +cceder a un elemento por su índice 6abc6 >>> del tupla[0% # "o es posible borrar ni añadir1 un elemento en una tupla lo !ue pro$ocará una e8cepcin
( 8cepciDn ) >>> tupla[0% = ./. # Tampoco es posible re3asignar el $alor de un elemento en una tupla lo !ue también pro$ocará una e8cepcin
( 8cepciDn ) >>> tupla[02% # 4ostrar los elementos de la tupla del índice 5 al 6 sin incluir este 7ltimo1 (6abc6, 42) >>> tuplaFanidada = (tupla, (>> 1, 2, 3, .abc. # Esto también es una tupla aun!ue es recomendable ponerla entre paréntesis recuerda !ue re!uiere al menos una coma1
(1, 2, 3, 6abc6) >>> (1) # +un!ue entre paréntesis esto no es una tupla ya !ue no posee al menos una coma por lo !ue 7nicamente aparecerá el $alor
1 >>> (1,) # En cambio en este otro caso sí es una tupla (1,) >>> (1, 2) # Con más de un elemento no es necesaria la coma final (1, 2) >>> (1, 2,) # +un!ue agregarla no modifica el resultado (1, 2)
Diccionarios Para declarar un diccionario se usan las llaves *. 1ontienen elementos separados por comas, donde cada elemento est0 formado por un par cla7e7alor *el s-mbolo separa la clave de su valor correspondiente. 8os diccionarios son mutables, es decir, se puede cambiar el contenido de un 7alor en tiempo de ejecuci?n. n cambio, las cla7es de un diccionario deben ser inmutables. sto Euiere decir, por ejemplo, Eue no podremos usar ni listas ni diccionarios como cla7es. l 7alor asociado a una cla7e puede ser de cualEuier tipo de dato, incluso un diccionario. >>> diccionario = .cadena. .abc., .numero. 42, .lista. [>> diccionario[.cadena.% # )sando una cla$e se accede a su $alor
6abc6 >>> diccionario[.lista.%[0% # +cceder a un elemento de una lista dentro de un $alor del $alor de la cla$e lista mostrar el primer elemento1
>> diccionario[.cadena.% = ./. # 2e3asignar el $alor de una cla$e >>> diccionario[.cadena.% 6/6 >>> diccionario[.decimal.% = 3141$2" # *nsertar un nue$o elemento cla$e0$alor >>> diccionario[.decimal.% 3141$2" >>> diccionarioFmito = .tupla. (
>>> diccionarioFmito[.diccionario.%[.lista.%[1% # +cceder a un elemento dentro de una lista !ue se
$ d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
encuentra dentro de un diccionario
42@ >>> diccionario = (.abc.,) 42* # (í es posible !ue una cla$e sea una tupla pues es inmutable >>> diccionario = [.abc.% 42* # "o es posible !ue una cla$e sea una lista pues es mutable lo !ue pro$ocará una e8cepcin
( 8cepciDn )
!entencia !3itch #ase Si bien "ython no tiene la estructura S#itch, hay varias formas de realizar la operación típica que realizaríamos con una sentencia s#itch case
4sando if5 elif5 else "odemos usar la estructura de la siguiente manera >>> if condicion1 hacer1 >>> elif condicion2 hacer2 >>> elif condicion3 hacer3 >>> else hacer
n esa estructura se ejecutara controlando la condicion, si no se cumple pasara a la siguiente y así sucesivamente hasta entrar en el else. *n ejemplo practico seria< >>> def calculo(op,a,b) if 6sum6 == op return a + b elif 6rest6 == op return a b elif 6mult6 == op return a b elif 6di76 == op return aGb else return Hone >>> >>> print(calculo(6sum6,3,4)) "
"odriamos 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 tiene que recorrer una por una hasta llegar a la correcta.
4sando diccionario "odemos usar un diccionario para el mismo ejemplo< >>> def calculo(op,a,b) return 6sum6 lambda a + b, 6rest6 lambda a b, 6mult6 lambda a b, 6di76 lambda aGb *get(op, lambda Hone)() >>> >>> print(calculo(6sum6,3,4)) "
=e esta manera si las opciones fueran muchas no recorrería todas. Solo iría directamente a la operación buscada. en la ultima linea .getop! lambda" #one$$ estamos dando la opción por defecto.
10 d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
#on'untos 8os conjuntos se construyen mediante set(items) donde items es cualEuier objeto iterable, como listas o tuplas. 8os conjuntos no mantienen el orden ni contienen elementos duplicados. Se suelen utili@ar para eliminar duplicados de una secuencia, o para operaciones matem0ticas como intersecci?n, uni?n, diferencia y diferencia simHtrica. >>> conAuntoFinmutable = froenset([.a., .b., .a.%) # (e utili,a una lista como ob&eto iterable >>> conAuntoFinmutable froenset([6a6, 6b6%) >>> conAunto1 = set([.a., .b., .a.%) # Primer con&unto mutable >>> conAunto1 set([6a6, 6b6%) >>> conAunto2 = set([.a., .b., .c., .d.%) # (egundo con&unto mutable >>> conAunto2 set([6a6, 6c6, 6b6, 6d6%) # 2ecuerda no mantienen el orden como los diccionarios >>> conAunto1 conAunto2 # *nterseccin set([6a6, 6b6%) >>> conAunto1 ' conAunto2 # )nin set([6a6, 6c6, 6b6, 6d6%) >>> conAunto1 conAunto2 # 9iferencia :1 set([%) >>> conAunto2 conAunto1 # 9iferencia 61 set([6c6, 6d6%) >>> conAunto1 I conAunto2 # 9iferencia simétrica set([6c6, 6d6%)
istas por comprensión *na lista por comprensi%n 2en inglés< list comprehension6 es una expresión compacta para definir listas. 8l igual que lambda, aparece en lenguajes funcionales. jemplos< >>> range() # ;a funcin range de$uel$e una lista empe,ando en 5 y terminando con el n7mero indicado menos uno
[0, 1, 2, 3, 4% >>> [ii for i in range()% # Por cada elemento del rango lo multiplica por sí mismo y lo agrega al resultado
[0, 1, 4, $, 1!% >>> lista = [(i, i + 2) for i in range()% >>> lista [(0, 2), (1, 3), (2, 4), (3, ), (4, !)%
%unciones 8as funciones se definen con la palabra clave def, seguida del nombre de la función y sus par0metros. 9tra forma de escribir funciones, aunEue menos utili@ada, es con la palabra clave lambda *Eue aparece en lenguajes funcionales como 8isp. l valor devuelto en las funciones con def ser0 el dado con la instrucci?n return. def< >>> def suma(, / = 2) return + / # 2etornar la suma del $alor de la $ariable 8 y el $alor de y >>> suma(4) # ;a $ariable y no se modifica siendo su $alor0 6 ! >>> suma(4, 10) # ;a $ariable y sí se modifica siendo su nue$o $alor0 :5 14
lambda< >>> suma = lambda , / = 2 + /
11 d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
>>> suma(4) # ;a $ariable y no se modifica siendo su $alor0 6 ! >>> suma(4, 10) # ;a $ariable y sí se modifica siendo su nue$o $alor0 :5 14
#lases 8as clases se definen con la palabra clave class, seguida del nombre de la clase y, si hereda de otra clase, el nombre de esta. n Python (.x es recomendable Eue una clase herede de LobjectL, en Python $.x esto ya no har0 falta. n una clase un LmHtodoL eEuivale a una Lfunci?nL, y un LatributoL eEuivale a una LvariableL. LinitL es un mHtodo especial Eue se ejecuta al instanciar la clase, se usa generalmente para iniciali@ar atributos y ejecutar mHtodos necesarios. 4l igual Eue todos los mHtodos en Python, debe tener al menos un par0metro, generalmente se utili@a self. l resto de par0metros ser0n los Eue se indiEuen al instanciar la clase. 8os atributos Eue se desee Eue sean accesibles desde fuera de la clase se deben declarar usando self delante del nombre. n python no existe el concepto de encapsulaci?n, ( por lo Eue el programador debe ser responsable de asignar los valores a los atributos >>> class Persona(obAect) def FFinitFF(self, nombre, edad) selfnombre = nombre # )n atributo cual!uiera selfedad = edad # 10 # (e comprueba !ue la edad no sea menor de 5 algo imposible1 ni mayor de :=5 algo realmente difícil1 return ?alse else # (i está en el rango 53:=5 entonces se modifica la $ariable selfedad = edad # (e modifica la edad
>>> p = Cersona(.Jlicia., 20) # *nstanciar la clase como se puede $er no se especifica el $alor de self
>>> pnombre # ;a $ariable nombre del ob&eto sí es accesible desde fuera 6Jlicia6 >>> pnombre = .Jndrea. # > por tanto se puede cambiar su contenido >>> pnombre 6Jndrea6 >>> pmostrarFedad() # (e llama a un método de la clase 20 >>> pmodificarFedad(21) # Es posible cambiar la edad usando el método específico !ue hemos hecho para hacerlo de forma controlada
>>> pmostrarFedad() 21
&ódulos xisten muchas propiedades que se pueden agregar al lenguaje importando módulos, que son NminicódigosN 2la mayoría escritos también en "ython6 que proveen de ciertas funciones y clases para realizar determinadas tareas. *n ejemplo es el módulo J4inter, que permite crear interfaces gr!ficas basadas en la biblioteca J4. Htro ejemplo es el módulo os, que provee acceso a muchas funciones del sistema operativo. %os módulos se agregan a los códigos escribiendo import seguida del nombre del módulo que queramos usar. +9
Interfa6 al sistema operativo l módulo os provee funciones para interactuar con el sistema operativo< >>> import os # 4dulo !ue pro$ee funciones del sistema operati$o
1 d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
>>> osname # 9e$uel$e el nombre del sistema operati$o 6posi6 >>> osmdir(.GtmpGeAemplo.) # Crea un directorio en la ruta especificada >>> import time # 4dulo para traba&ar con fechas y horas >>> timestrftime(.-K-m%d -:-L-M.) # 9ándole un cierto formato de$uel$e la fecha y/u hora actual 620100#10 1#011"6
"ara tareas de administración de archivos, el módulo shutil provee una interfaz de m!s alto nivel< >>> import shutil >>> shutilcop/file(6datosdb6, 6informaciondb6) 6informaciondb6 >>> shutilmo7e(6GbuildGprogramas6, 6dirFprogs6) 6dirFprogs6
#omodines de archivos l módulo glob provee una función para crear listas de archivos a partir de b'squedas con comodines en carpetas< >>> import glob >>> globglob(6p/6) [6numerosp/6, 6eAemplop/6, 6eAemplo2p/6%
Argumentos de l$nea de órdenes %os argumentos de línea de órdenes se almacenan en el a tributo argv del módulo sys como una lista. >>> import sys >>> print(s/sarg7) [6demostracionp/6, 6uno6, 6dos6, 6tres6%
&atem*tica l módulo math permite acceder a las funciones de matem!tica de punto flotante< >>> import math >>> mathcos(mathpi G 3) 0,4$4###33#$!3 >>> mathlog(1024, 2) 100
l módulo random se utiliza para realizar selecciones al azar< >>> import random >>> randomchoice([6durano6, 6manana6, 6frutilla6%) 6durano6 # eleccin sin reempla,o >>> randomsample(range(100), 10) [30, 23, 1", 24, #, #1, 41, #0, 2#, 13% # un float al a,ar >>> randomrandom() 0233"03#"!$2"2!12! # un entero al a,ar tomado de range?1 >>> randomrandrange(!) 3
l módulo statistics se utiliza para estadística b!sica, por ejemplo< media, mediana, varianza, etc< >>> import statistics >>> datos = [1", 2", 12, 0, 02, 12, 3% >>> statisticsmean(datos) 1!0"142#"142#"2
1" d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
>>> statisticsmedian(datos) 12 >>> statistics7ariance(datos) 13"2023#0$23#0$
%echas y 1iempos l módulo datetime permite manejar fechas y tiempos< >>> from datetime import date >>> ho/ = datetoda/() >>> ho/ datetimedate(201", #, 1!)
Sistema de objetos n Python todo es un ob&eto 2incluso las clases6. %as clases, al ser ob&etos, son instancias de una metaclase.
Python adem!s soporta herencia m'ltiple y polimorfismo. >>> cadena = .abc. # )na cadena es un ob&eto de str >>> cadenaupper() # +l ser un ob&eto posee sus propios métodos 6JN;6 >>> lista = [>> listaappend(42@) # )na lista también al igual !ue todo1 es un ob&eto y también posee sus propios métodos
>>> lista [
iblioteca est!ndar "ython tiene una gran biblioteca est!ndar, usada para una diversidad de tareas. sto viene de la filosofía Npilas incluidasN 2'batteries included' 6 en referencia a los módulos de "ython. %os módulos de la biblioteca est!ndar pueden mejorarse por módulos personalizados escritos tanto en / como en "ython. =ebido a la gran variedad de herramientas incluidas en la biblioteca est!ndar, combinada con la habilidad de usar lenguajes de bajo nivel como
Python viene con Lpilas incluidasL
/ y /MM, los cuales son capaces de interactuar con otras bibliotecas, "ython es un lenguaje que combina su clara sintaxis con el inmenso poder de lenguajes menos elegantes.
"mplementaciones xisten diversas implementaciones del lenguaje<
1Python es la implementaci?n original, disponible para varias plataformas en el sitio oficial de Python. 2ronPython es la implementaci?n para .D> Stac6less Python es la variante de 1Python Eue trata de no usar el stack de 1 *www.stac6less.com *http:''www.stac6less.com' 3ython es la implementaci?n hecha en 3ava Pippy es la implementaci?n reali@ada para Palm *pippy.sourceforge.net *http:''pippy.sourceforge.net' PyPy es una implementaci?n de Python escrita en Python y optimi@ada mediante 32> *pypy.org *http:''pypy.org' 4ctivePython es una implementaci?n privativa de Python con extensiones, para servidores en producci?n y
1# d 16
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Python
aplicaciones de misi?n cr-tica desarrollado por 4ctiveState Software.
%iferencias entre Python #&' y Python $&' l & de febrero de +??> +: se lanzó una nueva versión de "ython bajo el nombre clave 'Python ()))' o, abreviado, 'Py(*' .+@ sta nueva versión incluye toda una serie de cambios que requieren reescribir el código de versiones anteriores. "ara facilitar este proceso junto con "ython & se ha publicado una herramienta autom!tica llamada #to$.+F *na lista completa de los cambios puede encontrarse en )ovedades de "ython &.? 2http
)ase tambi)n PyP2. #epositorio de paEuetes de software de terceros para Python. 6inter. 7inding de la biblioteca gr0fica >cl'>6 para Python. Py">N. 7inding de la biblioteca gr0fica ">N para Python. wxPython. 7inding de la biblioteca gr0fica wxBidgets para Python. PyOt. 7inding de la biblioteca gr0fica Ot para Python. PySide. 7inding de la biblioteca gr0fica Ot para Python por Do6ia. Plone. Sistema de gesti?n de contenidos. 7iopython, 1olecci?n de bibliotecas orientadas a la bioinform0tica para Python. DumPy. 7iblioteca Eue da soporte al c0lculo con matrices y vectores. SciPy. 7iblioteca Eue permite reali@ar an0lisis cient-fico como optimi@aci?n, 0lgebra lineal, integraci?n, ecuaciones diferenciales entre otras. Pandas. 7iblioteca Eue permite el an0lisis de datos a travHs de series y dataframesQ. Pyomo. 1olecci?n de paEuetes de software de Python para formular modelos de optimi@aci?n
*eferencias . https:''www.python.org'downloads'release 'python;$%&' (. https:''www.python.org'blogs' $. istory and 8icense *http:''docs.python.org 'license.html . >he Ma6ing of Python *http:''www.artima.com 'intv'pythonP.html ). Bhy was Python created in the first placeRQ *http:''docs.python.org'faE'generalwhy;was; python;created;in;the;first;place. "eneral Python F4O. /. . Bhetting Tour 4ppetite *http:''docs.python.org 'tutorial'appetite.html %. http:''svn.python.org'view'python'trun6 'Misc'2S>9#TRviewUmar6upVpathrevU)+ W 4viso: archivo grande. =er el final del archivo. +. >he fate of reduce* in Python $&&& *http:''www.artima.com'weblogs 'viewpost.jspRthreadU!+!/ !. 1omputer Programming for verybody
15 d 16
*https:''web.archive.org'web'(&&!&(($&/+'http: ''python.org'doc'essays'cpe.html &. 2ndex of 'cpe *https:''web.archive.org 'web'(&&%&$()(()%'http:''www.python.org 'cpe' . BhatXs Dew in Python (.& *https:''web.archive.org 'web'(&&%&$(!&$&$%'http:''www.am6.ca'python '(.&' (. PP ((% ;; Statically Dested Scopes *http:''www.python.org'dev'peps'pep;&((%' $. PPs ()( and ()$: >ype and 1lass 1hanges *http:''docs.python.org'whatsnew'(.(.htmlpeps; ()(;and;()$;type;and;class;changes . PP ()): Simple "enerators *http:''docs.python.org 'whatsnew'(.(.htmlpep;());simple;generators ). PP (+( ;; 4 8ogging System *http:''www.python.org'dev'peps'pep;&(+(' /. threading W igher;level threading interface *http:''docs.python.org'library'threading.html %. LolandHsL hace referencia a "uido van #ossum, el autor del lenguaje de programaci?n Python, Eue es
05/07/01! 15 "5
Python - Wikipedia, la enciclopedia libre
holandHs. >ambiHn hace referencia a la gran concentraci?n de desarrolladores holandeses conocidos en relaci?n a otras nacionalidades. +. PP (& ;; >he Yen of Python *http:''www.python.org 'dev'peps'pep;&&(&' !. http:''ipython.scipy.org' (&. Python Software Foundation. More control flow optionsQ *https:''docs.python.org'('tutorial 'controlflow.htmldefining;functions. Python v2.7. !ocumentation *en inglHs. 1onsultado el (& de julio de (&. (. ric uss. Function
https://es.wikipedia.org/wiki/Python
desarrolloweb.com *en inglHs. 1onsultado el (& de
julio de (&. ($.
ibliografía Nnowlton, 3im *(&&!. Python. tr: Fern0nde@ =Hle@, Mar-a 3esKs * edici?n. 4naya Multimedia;4naya 2nteractiva. 2S7D !%+;+;);()$;!. Martelli, 4lex *(&&%. Python. &u,a de referencia. tr: "orj?n Salvador, 7runo * edici?n. 4naya Multimedia; 4naya 2nteractiva. 2S7D !%+;+;);($%;$.
Enlaces e'ternos Jutorial de "ython 2http
9btenido de https:''es.wi6ipedia.org'w'index.phpRtitleUPythonVoldidU&!&(%$&$Q
!e editó esta p*gina por 7ltima ve6 el -8 'un +89: a las 9;<=+, l texto est0 disponible bajo la 8icencia 1reative 1ommons 4tribuci?n 1ompartir 2gual $.&] pueden aplicarse cl0usulas adicionales. 4l usar este sitio, usted acepta nuestros tHrminos de uso y nuestra pol-tica de privacidad. Bi6ipedia^ es una marca registrada de la Fundaci?n Bi6imedia, 2nc., una organi@aci?n sin 0nimo de lucro.
16 d 16
05/07/01! 15 "5