Download Python: Primeros Pasos - Renato Covarrubias
Document related concepts
no text concepts found
Transcript
Introducción Tipos de Datos Funciones Base Clases Python: Primeros Pasos Renato Covarrubias Romero rcovarru@inf.utfsm.cl Duoc Linux Day Comunidad Linux Duoc viernes, 14 de agosto de 2009 Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Contenido 1 Introducción 2 Tipos de Datos 3 Funciones Base 4 Clases Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Contenido 1 Introducción Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases ¿Qué es python? I I Es un proyecto de Código Abierto Es un lenguaje de programación interpretado multiparadigma: I I I I Es imperativo (como C o Basic) Es orientado a objetos (como C++ o Java) Es funcional (como Lisp, Haskell o Scheme) etc... I Tipificado débil. I Es el “antónimo” a Perl, python es más limpio y elegante para programar. Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases ¿De donde viene el nombre? Lamentablemente no de la familia de serpientes constrictoras. Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases ¿De donde viene el nombre? Guido van Rossum (BDFL, Benevolent Dictator for Life), llamó al lenguaje en honor al grupo británico de humoristas los Monty Python (a veces conocidos como los Pythons). Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Filosofı́a 1 Bello es mejor que feo. 2 Explı́cito es mejor que implı́cito. 3 Simple es mejor que complejo. 4 Complejo es mejor que complicado. 5 Plano es mejor que anidado. Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Filosofı́a 6 Ralo es mejor que denso. 7 La legibilidad cuenta. 8 Los casos especiales no son tan especiales como para quebrantar las reglas. 1 9 1 10 Aunque lo práctico gana a la pureza. Los errores nunca deberı́an dejarse pasar silenciosamente. A menos que hayan sido silenciados explı́citamente. Frente a la ambigüedad, rechaza la tentación de adivinar. Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Filosofı́a 11 Deberı́a haber una (y preferiblemente sólo una) manera obvia de hacerlo. 1 12 Aunque esa manera puede no ser obvia al principio a menos que usted sea Holandés. Ahora es mejor que nunca. 1 Aunque nunca es a menudo mejor que ahora ya. 13 Si la implementación es difı́cil de explicar, es una mala idea. 14 Si la implementación es fácil de explicar, puede que sea una buena idea. 15 Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas! Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Filosofı́a Se puede encontrar un “huevo de pascua” con la filosofı́a. 1 import t h i s Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Contenido 2 Tipos de Datos Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Número Entero int Precisión fija 1 2 a = 42 print a Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Número Entero long Precisión arbitraria 1 2 3 # 2ˆ61 − 1 a = 2305843009213693951L print a Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Número float Punto/Coma Flotante 1 2 3 # pi a = 3.1415926535897931 print a Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Booleano bool Verdadero o Falso 1 2 3 # Morphy a = False print a Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases String str Inmutable 1 2 3 4 a = ” Hola Mundo ” print a p r i n t a+1 p r i n t a*2 Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases String unicode Versión unicode de str 1 2 a = u ’ \xd1and\ x f a ’ print a Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Secuencia list Mutable, puede contener diversos tipos 1 2 3 4 lista print lista print = [ ’ aaa ’ , 1 , 9 0 ] l i s t a [ −1] [ 0 ] = ’ bbb ’ lista [0:2] Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Secuencia tuple Inmutable 1 2 3 4 t u p l a = (1 , 2 , 3) tupla [0] = 2 tupla [0] otratupla = ( tupla , ( ’a ’ , ’b ’ ) ) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Mapping dict Grupo de pares claves, valor 1 2 3 d i c t = { ” d i a ” : 24 , ” mes ” : ” agosto ” } for k in d i c t : p r i n t ” %s= %s ” % ( k , d i c t [ k ] ) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Conjunto set y frozenset sin orden, no contiene duplicados. 1 2 conj = set ( [ ’ a ’ , ’ b ’ , ’ a ’ ] ) print conj Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Falso? ¿Con tanto tipo de dato, que valores se consideran verdades y cuales falsos? I None I False I 0, OL, 0.0, 0j I ’’, (), [], {} I Para las clases, cuando nonzero () o len () retornan 0 o False. Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Contenido 3 Funciones Base Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores (Algunas) Funciones Base I abs(x) I all ( i ), any(i ) I bool([x ]) I chr( i ), ord(c ), unichr( i ) I complex([real [, imag]]) I I dict ([ arg]) divmod(a,b) Renato Covarrubias Romero rcovarru@inf.utfsm.cl I filter (funcion, iterable ) map(funcion, iterable [, ...]) reduce(funcion, iterable [, iniciador ]) sum(iterable [, inicio ]) I float ([ x ]) I help([objeto ]) I hex(x) Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores (Algunas) Funciones Base I input ([ prompt]), raw input ([ prompt]) I oct(x) I int ([ x [, radix ]]) I open(nombre[,modo[,buf]]) I len(s) I pow(x, y [, z ]) I range([ inicio ,] fin [, salto ]) xrange([ inicio ,] fin [, salto ]) I round(x[,n]) I tuple ([ iterable ]) I list ([ iterable ]) I long([x [, radix ]]) I min( iterable [,...][ key]) max(iterable [,...][ key]) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Funciones anónimas Heredado de los lenguajes funcionales, existe lambda para definir funciones anónimas. 1 2 f = lambda x : x+1 print f (4) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Operadores Lógicos I x or y I x and y I not x not tiene la menor prioridad en operadores booleanos. not a==b es interpretado como not (a==b). a == not b causará un error de sintaxis. Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Comparaciones I < I <= I > I >= I == I ! = o <> I is I is not Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Operaciones Numéricas int, float, long, complex I x +y I x −y I x ∗y I x/y I x %y I −x I +x I x ∗ ∗y Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Operaciones al bit I x|y I x ∧y I x&y I x << n I x >> n I ∼x Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Tipos de Secuencia str, unicode, list, tuple, ... Los string puede ser con ’comilla simple’ o “comilla doble”. I x in s I x not in s I s+t I s*n, n*s I s[i] I s[i:j] I s[i:j:k] I len(s), min(s), max(s) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores (Algunos) Métodos de Strings I capitalize(), lower(), upper(), swapcase() I center(ancho[,caracter]) I count(sub[,inicio[,fin]]) I find(sub[,inicio[,fin]]) I isalpha(), isdigit(), islower(),... I join(seq), split([sep[,max]]) I replace(old, new[,count]) I zfill(ancho) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores Métodos Secuencias Mutables I s[ i ] = x I s[ i : j ] = t del s[ i : j ] I s.count(x) I s.index(x [, i [, j ]]) s. insert ( i ,x) s.remove(x) I s[ i : j :k] = t del s[ i : j :k] I I s.append(x) s. insert ( i ,x) s.pop([i ]) I s.reverse() I s. sort ([ cmp[,key[,rev ]]]) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Operadores (Algunos) Métodos Diccionarios I a[k] I a[k] = v del a[k] I k in a a.has key(k) Renato Covarrubias Romero rcovarru@inf.utfsm.cl I a.items() a.keys() a.values() I a.clear () Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases Contenido 4 Clases Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases ¿Cómo se define una clase? 1 2 3 4 5 6 class Charla : a = ’ Python ’ init ( self ): def s e l f . b = ” Primeros Pasos ” def nombre ( s e l f ) : r e t u r n s e l f . a+ ” : ” + s e l f . b 7 8 9 a = Charla ( ) p r i n t a . nombre ( ) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases ¿Existen clases definidas? !Por supuesto! :D y están agrupadas en módulos. import modulo 1 2 import d a t e t i m e p r i n t ( d a t e t i m e . d a t e t i m e . now ( ) ) Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases ¿Existen clases definidas? Son demasiadas, y hay para muchas cosas. La documentación la pueden encontrar en: http://docs.python.org/library/ Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases 10mo Encuentro Linux 2009.encuentrolinux.cl 22, 23 y 24 de octubre. Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos Introducción Tipos de Datos Funciones Base Clases ¿Consultas? Renato Covarrubias Romero rcovarru@inf.utfsm.cl Python: Primeros Pasos