La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a Python Por Cristian Suárez Sistemas Operativos 1 Año 2010.

Presentaciones similares


Presentación del tema: "Introducción a Python Por Cristian Suárez Sistemas Operativos 1 Año 2010."— Transcripción de la presentación:

1 Introducción a Python Por Cristian Suárez Sistemas Operativos 1 Año 2010

2 Sistemas Operativos 1 Año 2010 Consola Interactiva Se puede probar declaraciones o expresiones: >>> print (Hola, mundo) Hola, mundo >>> x = 12**2 >>> x/2 72 >>> # Esto es un comentario

3 Sistemas Operativos 1 Año 2010 Primeros pasos - Tipos básicos Probando Números en la consola: >>> 2+2 4 >>> 2**5 32 >>> 1-7 -6

4 Sistemas Operativos 1 Año 2010 Primeros pasos - Tipos básicos Operaciones con Strings: “hola”+“mundo” => “holamundo” # concatenación “hola”*3 => “holaholahola” # repetición “hola”[0] => “h” # indexación “hola”[-1] => “a” # (desde el final) “hola”[1:3] => “ol” # secciones len(“hola”) => 4 # tamaño “hola” True # comparación “o” in “hola” => True # busqueda “hola” == ‘hola’ # ambos tipos de comillas para Strings

5 Sistemas Operativos 1 Año 2010 Colecciones - Listas - Se puede poner cualquier objeto en las listas: a = [99, “hola que tal”, [“a”, “b”, “c”]] - Mismos operadores que los Strings: a+b, a*3, a[0], a[-1], a[1:], len(a) - Asignacion de objetos y eleccion de secciones: a[0] = 98 a[1:2] = [“hola”, “que”, “tal”] - Resultado de las ultimas 2 modificaciones: => [98, “hola”, “que”, “tal”, [“a”, “b”, “c”]] del a[-1] # => [98, “hola”, “que”, “tal”]

6 Sistemas Operativos 1 Año 2010 Colecciones - Listas >>> a = [0,1,2,3,4] >>> a.append(5)# [0,1,2,3,4,5] >>> a.pop()# [0,1,2,3,4] 5 >>> a.insert(0, 42)# [42,0,1,2,3,4] >>> a.pop(0)# [0,1,2,3,4] 42 >>> a.reverse()# [4,3,2,1,0] >>> a.sort()# [0,1,2,3,4]

7 Sistemas Operativos 1 Año 2010 Colecciones - Diccionarios - Tablas de Hash, “Arreglos asociativos”: d = {“foo”: “var”, “agua”: “agua”} - Busqueda: d[“foo”] => “var” d[“abc”] # excepción “KeyError” - Borrar, insertar, sobreescribir: del d[“agua”] # {“foo”: “var”} d[“abc”] = 123 # {“foo”: “bar”, “abc”: 123} d[“foo”] = “foo” # {“foo”: “foo”, “abc”: 123}

8 Sistemas Operativos 1 Año 2010 Colecciones - Diccionarios - Claves, valores, objetos: d.keys() => [“foo”, “abc”] d.values() => [“var”, “123”] d.items() => [(“foo”, “abc”), (“var”,“123”)] - Chequeo de presencia: “foo” in d => True; “x” not in d => True - Valores de cualquier tipo, claves casi todos: {“nombre”:“Guido”,“edad”:43, (“hola”, “mundo”):1, 42:“abc”, “flag”: [“rojo”, “blanco”, “azul”]}

9 Sistemas Operativos 1 Año 2010 Colecciones - Diccionarios Detalles de los Diccionarios: - Las claves deben ser inmutables: -> Numeros, Strings, tuplas de inmutables. (Estos no pueden ser cambiados) - Estan implementados con Hashing. - Las claves serán listadas en orden arbitrario.

10 Sistemas Operativos 1 Año 2010 Colecciones - Tuplas p1 = (“nombre1”, “apellido1”) p2 = (“nombre2”, “apellido2”) agenda = p1,p2 # paréntesis opcional # (Esto arma una tupla de tuplas) nombre = p1[0] singleton = (1,) # se puede agregar coma vacio = () # tupla vacía, solo paréntesis - tuplas vs. listas: las tuplas son inmutables

11 Sistemas Operativos 1 Año 2010 Colecciones – Colas (Thread Safe) Para usar colas que sean seguras al manipularlas con varios Threads, hay que importar lo siguiente: from multiprocessing import Queue Esta línea permite utilizar la clase Queue() para lo que queramos.

12 Sistemas Operativos 1 Año 2010 Colecciones – Colas (Thread Safe) Operaciones sobre Queues: get() => Saca el primer elemento de la cola y lo devuelve put() => Pone un elemento al final de la cola empty() => Devuelve True si está vacía, sino False

13 Sistemas Operativos 1 Año 2010 Colecciones – Colas (Thread Safe) Utilización de Queues: from multiprocessing import Queue q = Queue() q.put(5) if (not q.empty()): print(“Primer elemento: ” + q.get()) Consola: >>> Primer elemento: 5

14 Sistemas Operativos 1 Año 2010 Variables - No necesitan declaración - Es necesario asignarles algo - No son tipadas - Usando variables: amigable = True if amigable: saludo = “Hola mundo” else: saludo = 12**2 print (saludo) Todo es una variable. Hasta las funciones, clases y modulos

15 Sistemas Operativos 1 Año 2010 Variables - Referencias - Las asignaciones manipulan referencias x = y # “x” no hace una copia de “y”. x = y # esto hace que “x” referencie lo que “y” # referencia. - Muy útil, pero cuidado! - Ejemplo: >>> a = [1, 2, 3] >>> b = a >>> a.append(4) >>> print (b) [1, 2, 3, 4]

16 Sistemas Operativos 1 Año 2010 Variables - Ejemplo Ilustrado a 123 b a 123 b 4 a = [1, 2, 3] a.append(4) b = a a 123

17 Sistemas Operativos 1 Año 2010 Variables – Ejemplo Ilustrado a 1 b a 1 b a = 1 a = a+1 b = a a 1 2 Vieja referencia borrada Gracias a l asignacion (a=…) Nuevo objeto “int” creado por el operador “add” (1+1)

18 Sistemas Operativos 1 Año 2010 Estructuras de control if condición: expresiones elif condición: expresiones else: expresiones while condición: expresiones for variable in secuencia: expresiones # Se puede utilizar el comando # “break” y el “continue” dentro # de un “for” o un “while”

19 Sistemas Operativos 1 Año 2010 Indentación A diferencia de lenguajes como C/C++, Python utiliza Indentación. Es decir, que en vez de utilizar Llaves (“{”, “}”), se utiliza una cantidad determinada de espacio desde el borde izquierdo de la hoja de trabajo hacia el código. Ejemplo: if True: print(“Hola Mundo”) La indentación indica, en este caso, que se está imprimiento “Hola Mundo” si pasa por la condición del “if”.

20 Sistemas Operativos 1 Año 2010 Funciones def mcd(a, b): “mayor común divisor” # documentacion while a != 0: a, b = b%a, a # asignación paralela return b >>> mcd.__doc__ ‘mayor común divisor' >>> mcd(12, 20) 4

21 Sistemas Operativos 1 Año 2010 Clases - Estructura class Coneccion: verbose = 0 # variable de clase def __init__(self, host): # constructor self.host = host # variable de instancia def debug(self, aBool): self.sePuede = aBool # crear otra variable de inst def conectar(self): if self.sePuede: # llamando variable de inst print (“Conectando con: " + self.host)

22 Sistemas Operativos 1 Año 2010 Clases - Utilización >>> c = Coneccion(“c1”) # creación de clase >>> c.debug(True) # usando un método >>> c.conectar() Conectando con: c1 # muestra en consola

23 Sistemas Operativos 1 Año 2010 Clases - Subclasificación class ConeccionSegura(Coneccion): # superclase en parám. def debug(self): # solo modifica este método self.sePuede = True # Una subclase hereda las mismas variables y # métodos que su superclase, y se pueden modificar. >>> c = ConeccionSegura(“c1") >>> c.debug() # ahora no necesita un booleano >>> c.conectar() Conectando con: c1

24 Sistemas Operativos 1 Año 2010 Threads Un Thread es un hilo de ejecución. Crear otro Thread, además del principal, permite que varias cosas se ejecuten en paralelo. Para crear un Thread se necesita que la Clase creada sea subclase de “Thread” Para poder utilizar “Thread” se importa lo siguiente: from threading import Thread

25 Sistemas Operativos 1 Año 2010 Threads Una clase Thread entiende el método start(), que sirve para poner en funcionamiento ese Thread. Cuando al Thread se le dice start(), se llama al método run() del mismo, así que hay que crear ese método y poner ahí el código que queremos que se ejecute en paralelo.

26 Sistemas Operativos 1 Año 2010 Threads Creación de un Thread: from threading import Thread class Consumidor(Thread): def __init__(self, aName): Thread.__init__(self) # línea necesaria self.name = aName def run(self): print(self.name)

27 Sistemas Operativos 1 Año 2010 Threads Utilización del Thread: c1 = Consumidor(“con1”) c2 = Consumidor(“con2”) c1.start() c2.start() Consola: >>> con1 >>> con2

28 Sistemas Operativos 1 Año 2010 Fin


Descargar ppt "Introducción a Python Por Cristian Suárez Sistemas Operativos 1 Año 2010."

Presentaciones similares


Anuncios Google