Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Python es un lenguaje de programacin de propsito general de alto nivel: Dado que el cdigo se compila automticamente y es ejecutado, Python es adecuado para su uso como lenguaje de implementacin de aplicaciones web, o programacin matemtica, etc. Porque Python puede ampliarse en C y C++, Python puede proporcionar la velocidad necesaria, incluso para computar tareas intensivas. Debido a sus buenas construcciones de estructura (bloques de cdigo anidados, funciones, clases, mdulos y paquetes) y su uso consistente de los objetos y la programacin orientada a objetos, Python nos permite escribir, aplicaciones lgicas claras para tareas pequeas y grandes.
Tipos de datos incorporados: cadenas, listas, diccionarios, etc. Las estructuras de control habituales: if, if-else, if-elif-else, while, adems del potente iterador (for). Varios niveles de estructura organizativa: funciones, clases, mdulos y paquetes. Estos ayudan en la organizacin de cdigo. Un ejemplo excelente es la librera estndar de Python. Compilar sobre la marcha el cdigo de bytes. El cdigo fuente es compilado a cdigo de bytes sin un paso de compilacin independiente. Python proporciona una forma consistente para utilizar objetos: todo es un objeto. Y en Python es fcil de poner en prctica nuevos tipos de objetos (llamados clases).
Todo el mundo Python esta aqu, Web de Python. El conjunto de documentacin de Python estndar, Python documentation. Pgina de Ipython, un entorno interactivo de computacin cientca, Ipython interactive computing. Una serie de artculos, sobre la parte interna de Python, Python Internal. Artculos traducidos sobre el estilo de Python y mucho mas, Python idiomtico. Una coleccin de lecturas de Python, sobre muchos temas, Lecturas de Python.
Corriendo Python
Despus de haber instalado Python, puedes vericar tu instalacion, escribiendo en el terminal, la palabra python. Si todo sale bien, vers algo parecido a esto % python Python 2.7.5+ ( default , Sep 19 2013, 13:49:51) [GCC 4.8.1] on linux2 Type " help " , " copyright " , " license " f o r more information . > > > p r i n t "Python" Python Sobre Windows y Macintosh Python es lanzado como una aplicacin. Una ventana con un interprete aparece y tu puedes ver el prompt.
Corriendo Python
Puedes, usar el entorno de Python, como un calculador, o puedes realizar alguna operacin. Sugerimos fuertemente el uso de Ipython para hacer pruebas. El programa se termina al Tipear Control-D o Control-Z en el prompt interactivo. El programa corre hasta que EOF es alcanzado. o si escribimos raise SystemExit
Convencin-PEP8
Python utiliza indentacin para mostrar la estructura de bloque. Indentacin en el primer nivel muestra el inicio de un bloque. La proxima indentacin fuera de la anterior muestra el nal de un bloque. Por ejemplo: i f x: i f y: f1 ( ) f2 ( ) Y, la convencin es usar cuatro espacios para cada nivel de indentacin. En realidad, es ms que una convencin, es prcticamente un requisito. Todos los cambios propuestos en Python, son detallados en documentos pblicos llamados Python Enhancement Proposals (PEP). Lo anterior de los espacios en blanco se encuentra en el PEP-8.
Sesiones interactivas
Cuando ejecutamos Python, sin un argumento de serie de comandos, Python inicia una sesin interactiva y nos indica que introduzcamos expresiones y sesiones de Python. Como por ejemplo, al introducir las siguientes declaraciones > > > p r i n t "Hola a todos " Hola a todos > > > print 9 > > > print True 4 + 5
True
Las sesiones interactivas son tiles para explorar, revisar y utilizar Python como una calculadora interactiva.
IDLE: Es el entorno de desarrollo Python, (Integrated Development Environment) (IDLE). El IDLE, est basado en Tkinter. Incluye un editor de texto para escribir cdigo fuente de Python, un depurador integrado integrado y otras propiedades interesantes.... EL IDE modular, multiplataforma ECLIPSE tiene plugins que admiten Python, Jython, IronPython, Django, Unittest, etc. Ver pydev, para informarse ms. Ipython es genial. IPython tiene un montn de cosas extras que ahorran una gran cantidad de tiempo y mejoran tu productividad. Tiene un editor de texto, que puede ser Vim, o algn otro, por ejemplo y usa funciones mgicas para realizar las tareas.
Lenguaje Python
Empezemos con algunas conceptos previos Estructura lxica: Conjunto de reglas que rigen la manera de escribir programas en Python. Lneas y identacin: Un programa Python est compuesto por una secuencia de lneas lgicas, cada una compuesta por una o ms lnea fsicas. Python utiliza la indentacin para expresar la estructura de un programa. Conjunto de caracteres Los archivos Python estn constituidos por carcteres ASCII. Pero le podemos decir a Python, que estamos utilizando un superconjunto de ASCII, solo en comentarios o cadenas literales, de la siguiente forma, por ejemplo # * coding : iso 88591
Lenguaje Python
Smbolos Cada lnea lgica es una secuencia de componentes lxicos, llamados smbolos. Cada smbolo equivale a una subcadena de la lnea lxica. Estos son
Identicadores: Nombre utilizado, para identicar una variable. Palabras claves: Son identicadores que Python guarda para uso especco. Por ejemplo (class, break, yield, pass . . . ). Operadores: Caracteres no-alfanumricos y combinaciones de caracteres como operadores. Ejemplo, (+, *, //, , , !=, . . . ) Separadores: Python usa smbolos y combinaciones como separadores de expresiones, listas, listas y diccionarios, cadenas. Por ejemplo ( +=, *=, /=, //=, =, =, |=, :, ;, =, **= ) Literales: Es un nmero o una cadena de caracteres que aparece directamente en el programa. Utilizando separadores y literales, podemos crear valores de datos de clases fundamentales [42 , 3.8 , python ] (3 ,6 , 9) { python : 1 , c++ : 2} #L i s t a #tupla #Diccionario
Lenguaje Python
Secuencias Una secuencia es un contenedor ordenado de elementos indexados por nmeros enteros no negativos. Python proporciona tipos de secuencias integradas, denominadas cadenas (simples y Unicode), tuplas, y listas.
no son interpretadas de esta manera, sino que son copiadas literalmente en la cadena.
Listas a b c d = = = = [2 ,3 ,4] [2 , 7 , 3.5 , "Python" ] [] [3 , [ a , b ] ] # # # # Una Una Una Una l i s t a de enteros mix de objetos l i s t a vacia l i s t a de l i s t a
Podemos usar el el tipo list para crear una lista. Por ejemplo l i s t ( python ) # [ p , y , t , h , o , n ]
Cuando x es iterable list(x) produce y devuelve una nueva lista cuyos elementos son los mismos que los elementos de x. Podemos crear comprensiones de lista con list.
Cuando x es iterable tuple(x) devuelve una tupla cuyos elementos son los mismos que los elementos de x. Las tuplas son como las listas, pero el tamao es jado en el tiempo de creacin. No podemos reemplazar los miembros de una lista (se dice que es inmutable).
Diccionarios Tambin podemos llamar un diccionario llamando a dict.fromkeys. El primer argumento es un interable cuyos elementos se convierten en las claves del diccionario; el segundo argumento es el valor que corresponde a casa clave. Si se omite este ltimo el valor que se le corresponde es None. > > > d i c t . fromkeys ( python , 4) { h : 4 , o : 4 , n : 4 , p : 4 , t : 4 , y : 4} > > > d i c t . fromkeys ( [ 1 , 5 , 7 ] ) {1: None, 5: None, 7: None}
Valores Booleanos Cada valor de datos en Python, puede ser tomado como un valor de verdad; verdadero o falso. El tipo integrado bool es una subclase de int. Los nicos dos valores de tipo bool son True y False, que tiene representaciones de cadena de "True", "False", pero tambin valores numricos de 1 y 0 respectivamente. El buen estilo Python recomienda escribir cualquier argumento x, como, por que es redundante if x # Nunca i f bool ( x ) ; i f x == True ; y asi . . .
Un elemento de un objeto se expresa con una referencia a un objeto, seguido de una expresin entre corchetes. La expresin entre corchetes se llama ndice y el objeto se denomina contenedor del elemento. objeto [ ] x[y] #Acceder a un elemento
Podemos introducir mltiples destinos y signos igual (=) en una asignacin simple, puede tambin enumerar dos o ms referencias separadas por comas (unpacking) a = b = c = 0 a, b, c = x a , b = b , a
# Intercambiar referencias
Expresiones y operadores
Expresiones Una expresin es un poco de cdigo Python que evala para producir un valor. Las expresiones ms simples son los literales e identicadores. Podemos crear otras expresiones uniendo subexpresiones y operadores y/o separadores. 3+4 3 ** 4 Hello + Python 3 * ( 4 + 5)
Operadores en expresiones
expresion { key : valor} [ expre . . . ] ( expre . . . ) x [ index : index1 ] f ( expr . . . ) x [ index ] x. attr x ** y ~x +x , x x * y, x / y, x // x + y, x y
# Conversion de cadena # Creacion de diccionario # Creacion de una l i s t a # Creacion de una tupla # Division # Llamada a funcion # Indexado # Referencia a un atributo # Elevar a l a potencia #B i t a b i t NO # Unario mas, menos y, x % y
Operadores en expresiones
Continuacin . . . x << y , x >> y # Mayuscula izquierda , derecha x & y # B i t a b i t AND x ^ y # B i t a b i t XOR x | y # B i t a b i t OR x < y , x <= y , x > y , x >= y x <> y , x != y , x == y x i s y , x i s not y # Prueba de identidad x in y , x not in y # Prueba de pertenencia not x # Booleano NOT x and y # Booleano AND X or y # Booleano OR lambda arg , . . . expr # Funcion simple anonima
Expresiones y operadores
Escribir en un archivo de texto con la extensin .py lo siguiente y ejecutarlo p r i n c i p a l = 1200 # Cantidad i n i c i a l rate = 0.05 # Taza de interes numyears = 5 year =1 while year <= numyears : p r i n c i p a l = p r i n c i p a l * (1 + rate ) p r i n t year , p r i n c i p a l year += 1 Y el resultado es..... ejemplo2.py
Operaciones numricas
Podemos realizar las siguientes operaciones Conversiones numricas Se realiza una conversin explcita, transmitiendo el argumento numrico no complejo a cualquiera de los tipos integrados: int, long, float, complex. Operaciones aritmticas
1. Divisin El operador // realiza una divisin truncada. / realiza la divisin, devolviendo un resultado en punto otante. Podemos usar from __future__ import division garantiza que el operador / funciones sin truncamiento. 2. Elevar a la potencia a**b es la operacin de elevar a la potencia. La funcin integrada pow (a,b) devuelve el resultado a**b. 3. Comparaciones Tenemos los smbolos <, <=, >, >=, ==, != que pueden ser usados para comparar dos enteros cualquiera.
Operaciones en nmeros entero bit a bit Los enteros y enteros largos, pueden ser considerados como una cadena de bits y utilizar todas las operaciones dadas anteriormente.
Operaciones en secuencia
Secuencias habituales Funciones integradas len, max, min, sum. z = [2 ,4 , 6] len ( z ) , max( z ) , min( z ) , sum( z ) # 3 , 6 , 2 , 12
Conversiones en serie Funciones integradas tupla, list. No existe una conversin implcita entre tipos de secuencia diferentes, excepto que las cadenas simples se transforman en cadenas Unicode. x = (2 ,3 , 5) l i s t (x)
# [2 , 3 , 5]
Concatenacin y repeticin Usamos el operador + y el operador *. erika + cesar 3 * erika # erikacesar # erikaerikaerika
Operaciones en secuencia
Evaluar la pertenencia Operador in y not in comprueba si el objeto es cualquiera de la secuencia, devolviendo un valor booleano. x = [4 , 5 , 6] 3 in x # False
Indexar una secuencia El elemento jth de una sucesin S se indica como el indexado S[j]. Un ndice negativo j indica el mismo elemento en S que hace L + j, donde S tiene L elementos. x = [ python , C ++ , Android ] x [1] , x[ 1] # ( python ,
Android )
Dividir una secuencia Podemos seleccionar una subdivisin con s[i:j] x = [1 ,2 ,3 ,5] x[1:3] #[2 , 3]
Operaciones en secuencia
Cadenas Son inmutables. Los elementos de un objeto de cadena son cadenas, de longitud 1. Las divisiones de las cadenas son cadenas. Tuplas Los objetos de una tupla no se pueden modicar. Los elementos de una tupla son objetos arbitrarios. Las divisiones de una tupla es una tupla. Listas Los elementos de una lista se pueden modicar, por lo que podemos vincular o eliminar elementos o divisiones de una lista. Los elementos de una lista son objetos arbitrarios.
Mtodos de Lista L . reverse ( ) L . insert ( i , x) L . sort ( ) Ejemplo > > > a = [3 , 5 , 7 , 7 , python ] > > > p r i n t a . count ( 7 ) , a . count ( 5 ) , a . count ( x ) 2 1 0 > > > a . i n s e r t (2 , 1) > > > a . append(11) > > > a [3 , 5 , 1, 7 , 7 , 11] > > > a . sort ( ) > > > a [ 1, 3 , 7 , 7 , 11] # # # # Revierte , en e l lugar los elementos de L . Introduce e l elemento x en L antes del elemento en e l indice i . Ordena los elementos de L .
Mtodos de diccionarios
D. copy ( ) # Devuelve una copia s u p e r f i c i a l de D. D. has_key ( k ) # Devuelve un valor booleano s i l a # clave del diccionario se encuentra o no . D. items ( ) # Devuelve una l i s t a de los elementos de D. D. keys ( ) # Devuelve una l i s t a con las claves de D. D. values ( ) # Devuelve una l i s t a con los valores de D. Ejemplo d = { aa : 111, bb : 222} d . keys ( ) [ aa , bb ] d . values ( ) [111 , 222] d . items ( ) [ ( aa , 111) , ( bb , 222)]
Mtodos de diccionarios
# # # # #
Devuelve un iterador con los elementos de D. Devuelve un iterador con las claves de D. Devuelve un iterador con los valores de D. Devuelve D[ k ] s i k es una clave en D, de de l o contrario devuelve x (o None ) .
Ejemplo d = { aa : 111, bb : 222} f o r key in d . iterkeys ( ) : p r i n t key D = { Python : 4 , JavaScript : 3 , C ++ : 5 , kojo : 6} D. get ( C ++ )
Mtodos de diccionarios
D. clear ( ) D. update (D1) # Elimina todos los elementos de D. # Para cada k en D1, establece D[K] # igual a D1[ k ] . D. pop( k [ , x ] ) # Elimina y devuelve D[ k ] s i k es una clave . D. popitem ( ) # Elimina y devuelve un elemento a r b i t r a r i o . D. setdefault ( k [ , x ] ) # Devuelve D[ k ] s i k es una clave en D # sino D[ k ] =x y devuelve x . Ejemplo w={"python" : "web" , "c++" : " optimizacion " , " j a v a s c r i p t " : "games"} w1 = {" j a v a s c r i p t . j s " : " servidor " , "R" : " estadis tic a "} w. update (w1) print w { python : web , j a v a s c r i p t . j s : servidor , R : e sta dis tic a , j a v a s c r i p t : games , c++ : optimizacion }
Conjuntos en Python
Es un tipo de contenedor que ha sido parte de Python desde la versin 2.4. Un conjunto se compone de una colecci sn desordenada de objetos nicos e inmutables. Es una implementacin de Python de los conjuntos, que se conocen en matemticas. Un conjunto es iterable. x = set ( "Python" ) set ( [ h , o , n , P , t , y ] ) x = set ( [ " Perl " , "Python" , " Java " ] ) set ( [ Python , Java , Perl ] ) c i t i e s = set ( ( " Paris " , "Lima" , "London" , " B er l i n " , " Paris " ) ) set ( [ Paris , Lima , London , Berlin ] )
Conjuntos en Python
Podemos denir conjuntos (desde python2.6) sin utilizar la funcin integrada set. Podemos utilizar llaves en su lugar: lenguajes = { python , c++ , java , R } set ( [ python , R , java , c++ ] ) Los conjuntos se implementan de una manera, que no permite objetos mutables. El siguiente ejemplo demuestra, que no podemos incluir, por ejemplo, listas como elementos: lenguajes = {([ python , ruby ] , [ scala , c , visual ])} ....... TypeError : unhashable type : l i s t Los Fronzensets son como los conjuntos, excepto, que ellos son immutables.
Conjuntos en Python
c i t i e s = set ( [ "Lima" , " Paris " , "Roma" ] ) c i t i e s . add( Be r l in ) set ( [ Roma , Paris , Berlin , Lima ] )
c i t i e s = fronzeset ( [ "Lima" , " Paris " , "Roma" ] ) c i t i e s . add( Be r l in ) .... At tri but eEr ror : frozenset object has no a t t r i b u t e add Pertenencia al conjunto El operador in comprueba que si un objeto est en el conjunto. Devuelve un booleano. De igual modo not in .
Mtodos de conjuntos
Los conjuntos proporcionan una serie de mtodos. Los metodos no modicables devuelven un resultado sin alterar el objeto al que se aplican y se llaman instancias de tipo frozenset, mientras que los mtodos modicables pueden alterar el objeto al que se aplican y se les llama instancia de tipo set. S . copy ( ) # Devuelve una copia sombra S . difference ( ) S . intersection ( ) S . issubset (S1) S . issuperset (S1) S . symmetric_difference (S1) S . union (S1)
Mtodos de conjuntos
Ejemplo x = {"a" , "b" , "c" , "d" , "e"} y = {"b" , "c"} x . difference ( y ) set ( [ a , e , d ] ) x1 = {"a" , "b" , "c" , "d" , "e"} y1 = {"c" , "d"} x1 . issubset (y1) False c i t i e s 1 = {" Bruselas " , " B r a s i l i a " , " Rio Janeiro "} cities1_backup = c i t i e s 1 . copy ( ) c i t i e s 1 . clear ( ) c i t i e s 1 . backup set ( [ Rio Janeiro , Bruselas , B r a s i l i a ] )
Mtodos de conjuntos
S . add( x ) S . clear ( x ) S . discard ( x ) S . pop ( x ) S . remove( x ) # # # # # # # Agrega x como un elemento de S . Elimina todos los elementos de x . Elimina x como un elemento de S . Elimina y devuelva un elemento de S . Elimina x como un elemento de S . Provoca una excepcion KeyErrorexception s i x no es un elemento de S
Ejemplo x = {"a" , "b" , "c" , "d" , "e"} x . pop ( ) a x1 = {"a" , "b" , "c" , "d" , "e"} x1 . remove( " z " ) ... KeyError : z
La sentencia for La sentencia for en Python admite ejecuciones repetidas de una sentencia o bloques de sentencia, controladas por una expresin iterable. f o r n in range (1 ,10): p r i n t "2 a l a potencia %d i s %d" %(n , 2 **n) La sintaxis de la sentencia for: f o r expr in i t e r a b l e : declaraciones ( s )
Realizar un bucle en una secuencia de nmeros enteros es una tarea habitual, Python proporciona las funciones integradas range y xrange.
range ( x ) # L i s t a de elementos desde 0 a x ( excluido ) . range ( x , y ) # L i s t a de elementos desde x a y ( excluido ) . range ( x , y , paso ) # L i s t a de elementos desde x a y ( excluido ) # con l a diferencia de elementos subyacentes # igual a paso . Mientras que range devuelve un objeto de lista normal, xrange devuelve un objeto especial, dirigido al uso de interaciones con la sentencia for. Podemos usar ese iterador si queremos usando iter(xrange()). >>p r i n t range (1 ,5) [1 ,2 ,3 ,4] >>p r i n t xrange (1 ,5) xrange (1 ,5)
Compresin de lista
Muy a menudo, tendremos que construir una nueva lista de los elementos de una lista existente. La Compresin de lista puede ser til. La sintaxis para la compresin de lista esta basada en set builder notation. Dada la forma Y for X in LIST, Y es referida a la funcin de salida, X es la variable, LIST es el conjunto de entrada. Esto dice hacer Y para cada X en LIST. >>my_list = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10] >>[s t r ( x ) f o r x in my_list ] [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] Veamos otro ejemplo, queremos crear una lista de cadenas para cada elemento en my_list, excepto que esta vez slo queremos los elementos que son nmeros pares.
> > > n_list = [] > > > f o r x in my_list : ... i f ( x % 2) == 0: ... n _ l i s t . append( s t r ( x ) ) ... > > > n_list [ 2 , 4 , 6 , 8 , 10 ] # Por comprension de l i s t a > > > n _ l i s t = [ s t r ( x ) f o r x in my_list i f ( x % 2) == 0] > > > n_list [ 2 , 4 , 6 , 8 , 10 ] Esta versin introduce una expresin despus de la lista que acta como un ltro en el que los elementos pasan a la funcin de salida.
Podemos iterar sobre ms listas > > > l i s t _ a = [ A , B ] > > > l i s t _ b = [4 , 5] > > > [ ( x , y ) f o r x in l i s t _ a f o r y in l i s t _ b ] [ ( A , 4) , ( A , 5) , ( B , 4) , ( B , 5)] Lo que devuelve una tupla. Si desea listas anidadas, tambin puedes anidar una comprensin de lista dentro de otra. > > > l i s t _ a = [ A , B ] > > > l i s t _ b = [ C , D ] > > > [ [ x+y f o r x in l i s t _ a ] f o r y in l i s t _ b ] [ [ AC , BC ] , [ AD , BD ] ]
Un programa puede provocar una excepcin mediante la sentencia raise. cuando se provoca una excepcin, el ujo de control del programa se detiene y Python busca un control de excepcin apropiado. Notas: Python no tiene una especial declaracin switch o case para testear valores. Para manejar mltiples casos de test, usamos la declaracin elif. La sentencia while y for pueden de forma opcional la clusula else. f o r x in container1 : f is_ok ( x ) : break # e l elemento x es correcto . # F i n a l i z a e l bucle .
Funciones
Las funciones son denidas con la sentencia def
def remainder ( a , b ) : q = a//b r = a q*b return r El cuerpo de una funcin es una sucesin de sentencias que se ejecuta cuando la funcin es llamada. Tu puedes invocar a la funcin de la siguiente manera: a = remainder (42,5). Puedes adjuntar los argumentos por defecto para los parmetros de la funcin mediante la asignacin de valores en el denicin de la funcin. def testDefaultArgs ( arg1 , arg2= default2 ) : sentencias
Cuando una funcin dene un parmetro con un valor por defecto, ese parmetro y todo los parmetros que siguen son opcionales. Si los valores no son asignados a todo parmetro opcional en la denicin de la funcin, se produce una excepcin SyntaxError. funcion0.py a = 2 def func1 ( x = a ) : return x a = 3 func1 ( ) # Reasignamos a # Devuelve 2
Valores de los parmetros por defecto siempre se establecen en los objetos que se suministran como valores cuando se deni la funcin, como muestra el ejemplo anterior.
Lo anterior resulta dicil cuando el valor por defecto es un objeto modicable y el cuerpo de la funcin altera el parmetro def f ( x , y=[]) y . append( x ) return y p r i n t f (34) # [34] p r i n t f (45) # [34 , 45] Si queremos que y se vincule a un nuevo objeto de lista vaco, cada vez que se invoque f con argumento nico, hacemos lo siguiente def f ( x , y=[]) i f y i s None: y = [ ] y . append( x ) return y p r i n t f (34) # [34] p r i n t f (45) # [45]
Al nal de los parmetros podemos utilizar cualquiera o ambas de las dos formas especiales *args y **kwargs. Cada llamada a la funcin puede vincular args a la tupla cuyos elementos son los argumentos posicionales extra. Del mismo modo kwargs se vincula a un diccionario cuyos elementos son los nombres y los valores de los argumentos nominales extra (keyword arguments). funcion1.py def c a l l f u n c ( * args , ** kwargs ) : func ( * args , * * kwargs ) Este uso de *args y **kwargs es utilizado para escribir las envolturas y los proxies a otras funciones. Por ejemplo, callfunc() acepta cualquier combinacin de argumentos y simplemente los pasa a travs de func().
La sentencia Return devuelve un valor desde una funcin. Si el valor no es especicado o tu omites esta sentencia, el objeto None es retornado. def divide ( a , b ) : q = a//b r = a q*b return r x ,y = divide (42 , 5)
# x = 8, y = 2
Otro ejemplo, usando return def f _ m u l t i p l e _ l i s t a ( ) : l1 =[] l2 =[] return ( l1 , l2 ) def f0 ( ) : l i s t 1 , l i s t 2=f _ m u l t i p l e _ l i s t a ( ) print l i s t 2