Download Python Training Course - Programando con Python / FrontPage
Document related concepts
no text concepts found
Transcript
Python Training Course Wilderman Ceren Ingeniero de Sistemas – Especialista en Telecomunicaciones Consultor y experto en soluciones informáticas basadas en software libre Python Training Course Perfil profesional (Unix/POSIX) ● ● Desarrollo de Software – LAMP, Python (Bindings),PERL, BASH, Fortran, algo de C,C++,Java,Tomcat,XML, webservices (SOAP, XML-RPC). – BD> MySQL, PostgreSQL, sqlite, BerkeleyDB Redes – ● Enrutamiento, Interoperabilidad entre dispositivos propietarios y libres, sistemas embebidos, firewalls, IDS. Sistemas distribuidos – Implementación de clusters de alto rendimiento (HPC) y alta disponibilidad (HA). Python Training Course Perfil profesional (Unix/POSIX) ● ● Administración de servidores y recursos – GNU/Linux (debian, gentoo, RHEL, ubuntu, otros) – FreeBSD, OpenBSD & NetBSD. – Seguridad en Embebidos: m0n0wall, pfSense Seguridad – OpenLDAP, Kerberos,OpenVPN, FreeRADIUS Python Training Course Contenido 1. Que puedo hacer con Python ? 2. Puntos técnicos fuertes 3. El intérprete 4. Implementación alternativa 1. Cpython 2.Jython 3.IronPython 5. Corriendo programas en Python Python Training Course Contenido 6.Tipos de Objetos – Integrados (built-in) – Numeros – Cadenas – Listas – Diccionarios – Tuplas – Archivos – Otros Python Training Course Contenido ● 7. Números • Literales numericos • Operadores • Variables y Expresiones basicas • Formatos de visualiz. Numerico • Division (classic y floor) • Operaciones Bitwise • Entero Largo • Número complejo Python Training Course Contenido 8.Números – Otros tipos numericos ● ● ● ● Decimales Sets Booleans Extensiones de terceros 9.Cadenas – Literales – Operaciones Basicas Python Training Course Contenido – Indexado y Cortado (indexing and slicing) – Herram. De Conversion – Formateo de Cadenas – Métodos – Categorias de tipo general 10.Listas • Operaciones basicas • Indexado, Cortado y Matrices • Mutabilidad Python Training Course Contenido 11.Diccionarios – Operaciones basicas – Mutabilidad – Usos 12.Tuplas – Sintaxis – Conversiones e inmutabilidad – Por que Listas y Tuplas? Python Training Course Contenido 13.Archivos – Objetos en archivos – Pickle – Otras herramientas de archivo – Tipos de Categoria – Jerarquia de Tipos – Otros tipos – Tipos Built-in Python Training Course Contenido 14. Sentencias en Python – Sintaxis a partir de sangrías – Casos especiales 15. Loops interactivos – Manejo de errores con entrada de texto – Manejo de errores con sentencias try 16. Sentencias de asignación Python Training Course Contenido – Asignando en secuencia – Asignación múltiple – Asignación aumentada – Reglas para nombrar variables – Sentencias en expresiones – Cambios en el mismo lugar 17. Sentencias print – Redirigiendo el flujo de salida Python Training Course Contenido 18. Sentencias if – Ejemplo basico – Multi-ramificación con if – elif – Reglas para sintaxis python – Delimitadores de bloque – Delimitadores en sentencias – Casos especiales – Tests de verdad – Expresion ternaria (if/else) Python Training Course Contenido 19. Loops while y for – break, continue, pass, break y else – Iterators – Iterators a nivel de archivo – Otros iterators embebidos (built-in) & user-defined – Técnicas para codificar loops – Usos de range, zip y map – Generación de offsets e items con enumerate Python Training Course Contenido 20. Comprensión de lista – En archivos – Sintaxis extendida 21. Documentación del código fuente – comentarios (#) – función dir – Docstrings:__doc__ ● ● ● definido por el usuario estandar integrado Python Training Course Contenido – PyDoc: Función de ayuda 22. Funciones – Para que utilizar funciones ? – Codificación de una función ● ● ● Sentencia def Definición Llamadas – Polimorfismo en Python – Variables locales Python Training Course Contenido 23. Alcance y argumentos – Reglas en el alcance (scope) – Conceptos Básicos del alcance – Ejemplos – Alcance integrado – La sentencia global – Minimizar uso de variables globales – Minimizar cambios en archivo cruzado – Otras formas de accesar globalmente – Alcances y funciones anidadas Python Training Course Contenido – Pasando argumentos – Argumentos y referencias compartidas – Evitando los cambios mutables en argumentos – Simulando parámetros de salida – Modos de concordancia de argumentos – Valores default y keyword – Argumentos arbitrarios – Combinando keywords y default – Ejemplo general de uso de funciones Python Training Course Contenido 24.Funciones Avanzadas – Funciones anónimas: lambda ● ● ● – Expresiones lambda Por que usar lambda ? lambdas anidados y alcances Aplicando funciones a argumentos ● ● comando apply Sintaxis de llamada similar a apply – Mapeando funciones sobre secuencias: map – Uso de filter y reduce Python Training Course Contenido – Comprensión de lista: Mappings – Conceptos básicos – Añadiendo tests y loops anidados – Comprensión de lista y matrices – Iterators: Generators ● ● Protocolo Función Generator Extendida: send y next Iteratores y tipos de datos integrados – Alternativas en la coordinación en iteraciónes – Conceptos en el diseño de funciones – Funciones son objetos: llamadas indirectas – Tips en Funciones (Para tener en cuenta) Python Training Course Contenido ● ● ● Nombres locales detectado estáticamente Objetos default y mutables Funciones sin retorno alguno 25. Módulos – Por que utilizar módulos ? – Arquitectura de un programa en Python ● ● ● – Cómo estructurar un programa Imports y Atributos Módulos de la libreria estándar Cómo trabaja import Python Training Course Contenido ● Programar un módulo – – – – ● Paquetes – – ● Creación Uso (import, from) Namespaces Recargar un módulo Import Por que utilizar import de paquete? Conceptos Avanzados en módulos – – – – – – Ocultando datos Habilitando futuras caracteristicas Mezclando modos de uso Import Relativo Conceptos en diseño de módulos Gotchas Python Training Course Contenido 26. Clases y POO ● Generalidades ● Programando clases ● Programando clases II Sentencia Clase Métodos Herencia Operador de Sobrecarga Iteraciónes definida por el usuario Privacidad para los atributos en instancias Python Training Course Contenido ● – Namespaces Diseño con clases ● ● ● ● ● ● ● ● ● Python y POO Clases como registros POO y herencia: relaciones “Is-a” POO y composición: relaciones “Has-a” POO y delegación Herencia múltiple Clases son objetos: Generic Factories Métodos son objetos: Bound o unbound Revisión a la Docmentación con Strings Python Training Course Contenido – Diseño con clases ● – Clases Vs Modulos Topicos avanzados en clases ● ● ● ● ● ● Extendiendo tipos de datos “Built-in” Atributos para clase “seudoprivada” Nuevo estilo para clases Static y métodos de clase Función “decorators” Gotchas (Tips) Python Training Course Contenido 27. Excepciones y Tools ● Conceptos básicos ● ● ● ● ● ● ● ● Por que las excepciones (roles) Manejo de Excepciones Sentencia try/except/else Sentencia try/finally Unificado try/except Sentencia raise Sentencia assert Objetos Exception ● Excepciones basadas en String Python Training Course Contenido – Objetos Exception ● ● – Excepcion basada en clase formas y sentencias generales raise Diseño con Excepciones ● ● ● ● ● Excepciones anidadas (nesting exception) Lenguajes en excepciones Tips para diseño de Excepciones Gotchas Resumen del “Core” – – Python Toolset Desarrollo de Tools para proyectos grandes Python Training Course Introducción ● Por que la gente usa Python – Calidad del Software * – Productividad ** – Portabilidad – Librerias de soporte – Integración de componentes – Se disfruta! Python Training Course Quienes usan Python? ● Google ● YouTube ● BitTorrent ● Intel, Cisco, HP, Seagate, Qualcomm ● Pixar ● Nasa ● ESRI (GIS) ● NSA ● OLPC Python Training Course 1. Que puedo hacer con Python? ● Scripting y software “standalone” ● Lenguaje de Propósito General ● Web, Juegos, Robótica, Aeronáutica ● Programación a nivel de SO. ● GUIs (Tkinter, wxPython) ● PythonCard – Dabo ● Otros GUIs: Qt, GTK, MFC, Swing ● Jython & servicios Python CGI Python Training Course 1. Que puedo hacer con Python? ● ● ● Internet Scripting Integración de componentes (C,C++, COM (MSWin), Jython, .NET (IronPython), CORBA) Base de Datos (Sybase, Oracle, Informix, ODBC, MySQL, PostgreSQL, SQLite, BDB, Firebird) ● Rápido en Prototipos hacia C/C++ ● Programación Numérica y Científica (Numpy) ● Juegos, Imagenes, AI, XML, Robotica ... y más! Python Training Course 2. Puntos técnicos fuertes ● Orientado a Objetos – Polimorfismo, Sobrecarga, multi herencia – POO es una opción (no es mandatoria) ● Es libre de usar, distribuir y es soportado! ● Es portable – Linux/Unix, Windows/DOS, Mac OS X, BeOS, OS/2 – Sistemas de Tiempo Real (VxWorks) – Cray – IBM mainframes – PDAs, Celulares con Symbian/Windows Mobile – Consolas de juego, iPods y mas... Python Training Course 2. Puntos técnicos fuertes ● Es poderoso – Híbrido (se integra con lenguajes “scripting” Perl,TCL y tradicionales como C/C++) – Tipificación dinámica (no declaración previa) – Manejo automático de memoria – Se programa en proyectos largos y complejos (uso de módulos, clases y excepciones) – Objeto tipos “Built-in” – Tools “Built-in” – Utilidades desde terceros Python Training Course 2. Puntos técnicos fuertes ● ● Es mezclable con otros lenguajes – Python API permite a rutinas C ser llamadas desde python mismo. – Se puede prototipear en Python y luego llevarlo a C/ C++ una vez al tiempo. Facilidad de uso – ● ● codificalo y correlo de una! Fácil de aprender Su nombre viene de Monty Python's Flying Circus Python Training Course 3. El intérprete ● ● ● ● ● Es una clase de programa que invoca otro programa. Es la capa lógica de software entre el código y el hw de computadora. Auto-Instala en Windows (Click->Siguiente) Linux/Mac OS X preinstalado?, compilan fuente o packs RPM/DEB Disponibilidad: iPod, consolas de juego, celulares Python Training Course 3. El intérprete ● Ejecución de programa – Archivo de texto simple con sentencias: ● ● – Generar con cualquier editor de texto ● – print 'hola mundo' print 2 ** 100 Extensión .py > Python script1.py hola mundo 1267650600228229401496703205376 Python Training Course 3. El intérprete ● ● Ejecución vista desde Python: – Archivo Texto Fuente -> Intérprete -> byte code -> maquina virtual – Extension .pyc : archivo byte code (binario) Python Virtual Machine (PVM): – Es un “big loop” ke interactua entre las instr. bytecode – Es sólo una parte del sistema ke conforma python. Python Training Course 3. El intérprete – Implicaciones en el rendimiento ● ● ● ● – C/C++ mas eficientes en la corrida o ejecución Bytecode es una represent. python no código maquina Código se ejecuta a medida. que se escribe Bytecode sigue interpret. Y requiere mas CPU Implicaciones en el desarrollo ● ● ● ● Entorno Desarrollo & Ejecución son iguales Compilador presente en runtime No Compilar -> Enlazar, solo haga y ejecute! Todo sucede cuando se ejecuta el code Python Training Course 4. Implementaciones Alternativas 1.Cpython • • Portar código Python a C ANSI (ActivePython distro) Implementación estandar de referencia del lenguaje 2. Jython • • Integración con Java (scripts corren como java apps) Clases Java que portan el código python a la JVM. Python Training Course 4. Implementaciones Alternativas 3. IronPython Permite a scripts python integrarse con aplicaciones codificadas para correr sobre .NET Framework Actúa como componente cliente/servidor para ser invocado por otros lenguajes .NET Desarrollado por Microsoft (propietario de .NET) Python Training Course 5. Ejecutando Python scripts: Modo Interactivo ● ● ● Despues de estar instalado apropiadamente ejecutar desde el prompt (w32 o unix): python Si deseas ejecutarlo desde cualquier sitio, agregarlo a la variable de entorno PATH (unix) /usr/bin/python o PATH (w32) asi C:\Python25\python Prompt: >>> {command line} Python Training Course 5. Ejecutando Python scripts: Modo Interactivo ● >>> print 'Hola mundo!' Hola mundo! ● >>> print 2**8 256 ● ● ● Para salir del interprete: unix -> CTRL+D, w32 -> CTRL+Z Para saber valor de variables no es necesario utilizar print Ejecuta instrucción a instrucción y no necesita cargar script completo . Python Training Course 5. Ejecutando Python scripts: Modo Interactivo ● Sirve para experimentar el lenguaje y utilizarlo para comprobar porciones de código ● Escriba solo comandos ● No utilice sangrado en este modo Python Training Course 5. Ejecutando Python Scripts: Archivos y Linea de Comandos ● ● ● ● Guardar permanentemente el código en archivos (módulos) ¿ Modulos => programas ? Scripts => conjunto de módulos que corren directamente. Prueba: Crear fichero spam.py y ejecutarlo print 2 ** 8 # exponencial print 'El lado brillante' + 'de la vida' python spam.py 256 El lado brillante de la vida Python Training Course #concatenar 5. Ejecutando Python Scripts: Archivos y Linea de Comandos ● ● ● ● ● w32: Al editar asocie el archivo a guardar con extensión .py w32: deshabilite del sistema la opción de ocultar extensiones Utilice nombre+extension al ejecutar: python spam.py y no python spam Al importar módulo, no es obligado utilizar extensión: import spam Utilice sentencia print en scripts para resultados Python Training Course 5. Ejecutando Python Scripts: Unix scripting ● ● ● ● 1era linea de código: #!/usr/bin/python Aplicar privilegio de ejecutable: chmod +x file.py scripts no requieren obligatoriamente extension .py (contrario a w32) En algunos unix: Es probable evitar en cabecera el python “full path” usando env asi: #!/usr/bin/env python Python Training Course 5. Ejecutando Python Scripts: Cliqueando Iconos bajo Windows ● ● ● ● ● ● Asocia los .py para que se ejecuten con el IDLE (intérp. del lenguaje) con un simple “doble click”. unix: toca asociar los .py con el explorador de archivos empleado. Utilice al final raw_input() de truco para poder pausar el script al ejecutarlo con “doble click” “clickear” script, impide ver mensajes de error. Mejor use linea de comandos o IDLE. Mejor “clickear” scripts cuando ya estén depurados. Use .pyw para construcciones especiales w32 y evitar que aparezca la consola Python Training Course 5. Ejecutando Python Scripts: Importar módulos y recargarlos ● ● ● ● ● ● Cada fichero .py viene siendo un módulo. Use import para acceder a los items definidos en un módulo. El modelo de servicios basado en módulos participa dentro del core como arquitectura de un programa en python. El módulo principal o de “más alto nivel” es el único ke es lanzado para iniciar el programa entero. import tambien ejecuta un script (solo una vez en la misma sesión IDLE): reload, permite ejecutar muchas veces el mismo script previamente cargado (importado) en la misma sesión ● Python Training Course 5. Ejecutando Python Scripts: Atributos ● Un módulo es un paquete de nombres de variables conocido como namespaces. ● Cada nombre dentro de ese paquete es un atributo. ● Un atributo es un nombre de variable unido a un objeto. ● ● Ejemplo: crear .py, defina una variab y luego desde el IDLE importelo e imprima el valor de esa variable (atributo). Utilice import y from / import Utilice dir() para listar los atributos de un módulo: >>> dir(threenames) ['_ _builtins_ _', '_ _doc_ _', '_ _file_ _', '_ _name_ _', 'a', 'b', 'c'] Python Training Course 5. Ejecutando Python Scripts: Interfaz de usuario (IDLE) ● Le permite editar, correr, visualizar y depurar programas python. ● Portable, basado en TKInter GUI Toolkit ● w32: es fácil de interactuar con el ● ● Siempre agregue a los archivos extension .py Ejecute los scripts desde el menu (Run->Run module) Es necesario recargar módulos anidados desde el módulo principal. ● No existe un “limpiar pantalla” ● TKInter no responde ante el tratamiento de hilos (threads) ● Depura con sólo clickear el script.- Python Training Course 5. Ejecutando Python Scripts: IDE's alternativos ● Eclipse + pyDev (libre) ● Komodo (comercial) ● PythonWin (ActiveState) ● Otros: WingIDE, pyCard Python Training Course 5. Ejecutando Python Scripts: Python embebido ● Se aplica en dominios especializados. ● Embebido = ejecutado por otro programa ● Es posible correr código python dentro de un programa C (integración Python/C) include <Python.h> ... Py_Initialize(); PyRun_SimpleString(“x = brave + sir + robin”); Python Training Course 5. Ejecutando Python Scripts: binario ejecutable ● ● Byte code + intérprete => binario ejecutable Como despliegue de producto final, asemeja a una aplicación convencional (click a iconos, linea de comandos) Python Training Course 6. Tipos de Objetos Incorporados “Built-In” ● ● ● ● ● ¿Si está hecho un procedimiento, para ke rediseñarlo? Hace fácil la escritura de programas Componentes de extensiones => clases python o interfaces C Son mas eficientes ke estructuras personalizadas Hacen parte del estándar del lenguaje Python Training Course 6. Tipos de Objetos Tipo de datos esenciales ● Números: ● Cadenas: ● Listas: [ 1, [ 2, 'three' ], 4 ] ● Diccionarios: { 'food' : 'spam', 'taste' : 'yum' } ● Tuplas: ( 1, 'spam', 4, 'U' ) ● Archivos: myfile = open( 'eggs', 'r' ) ● Otros: sets, types, None, Booleans ● Declarados dinámicante. ● 1234, 3.1415, 999L, 3+4j 'spam', “abcd's” Fuerte en las operaciones válidas que correspondan con la naturaleza del objeto. Python Training Course 6. Tipos de Objetos Números ● Enteros (integers): ● Punto flotante (float): >>> 1.5 * 4 ● >>> 123 + 222 Ilimitada-precision (long integer con parte imaginaria): >>> 2 ** 100 1267650600228229401496703205376L ● Decimal de precisión flexible ● Sets Python Training Course 6. Tipos de Objetos Números ● math: módulo con colección matemática! >>> import math >>> math.pi 3.1415926535897931 >>> math.sqrt(85) 9.2195444572928871 ● random: módulo aleatorio >>> import random >>> random.random( ) 0.59268735266273953 >>> random.choice([1, 2, 3, 4]) 1 Python Training Course 6. Tipos de Objetos Strings ● Guardan información textual o una arbitraria colección de bytes. ● Una secuencia de un caracter ● Operaciones con strings: >>> >>> 4 >>> 'S' >>> 'p' S = 'Spam' len(S) S[0] S[1] Python Training Course 6. Tipos de Objetos Strings ● ● ● El 1er item está en la posición 0 y el ultimo en len(s)-1 Indice negativo va a relación de der. a izq: S[-1] => 's' Corte en la secuencia (slice): >>> S 'Spam' >>> S[1:3] 'pa' Python Training Course 6. Tipos de Objetos Strings ● Cortado (slice): >>> S[1:] 'pam' >>> S 'Spam' >>> S[0:3] 'Spa' >>> S[:3] 'Spa' >>> S[:-1] 'Spa' >>> S[:] 'Spam' Python Training Course 6. Tipos de Objetos Strings ● Concatenación: >>> S 'Spam' >>> S + 'xyz' 'Spamxyz' >>> S * 3 'SpamSpamSpam' ● ● + => Suma numérica o concatenar cadenas (polimorfismo) Strings son inmutables: S[0] = 'z' Error! Pero: >>> S = 'z' + S[1:] >>> S 'zpam' #correr expresion para crear nuevo objeto Python Training Course 6. Tipos de Objetos Strings ● Algunos métodos específicos: >>> S.find('pa') #encuentra offset 1 >>> S.replace('pa','XYZ') 'sXYZm' >>> line = 'aaa,bbb,ccccc,dd' >>> line.split(',') ['aaa', 'bbb', 'ccccc', 'dd'] >>> S='spam' >>> S.upper() 'SPAM' ● Ayuda en linea: para conocer métodos y atributos de una instancia utilice dir(S),help(S.{method}) Python Training Course 6. Tipos de Objetos Strings ● Multilinea: >>> msg = “““ aaaaaaa bbb'''bbbbbb””” ● Patterns: >>> import re >>> match = re.match('Hello[\t]*(.*)world', 'Hello World') >>> match.group(1) 'Python ' Python Training Course Python 6. Tipos de Objetos Listas ● ● ● ● Secuencia mas general del lenguaje. Colección ordenada de distintos objetos arbitrarios y sin tamaño predefinido Mutable (modificable) Operaciones: >>> L = [123, 'spam', 1.23] >>> len(L) 3 Python Training Course ● >>> L[0] 123 ● ● ● ● ● ● ● >>> L[:-1] [ 123, 'spam' ] >>> L + [4, 5, 6] [ 123, 'spam', 1.23, 4, 5, 6 ] >>> L [ 123, 'spam', 1.23 ] Algunas operaciones típicas: >>> L.append('NI') >>> L [ 123, 'spam', 1.23, 'NI' ] >>> L.pop(1.23) >>> L [ 123, 'spam', 'NI'] Pruebe métodos insert, remove Python Training Course ● Sort: >>> M = ['bb', 'aa', 'cc'] >>> M.sort( ) >>> M ['aa', 'bb', 'cc'] ● Reverse: >>> M.reverse( ) >>> M ['cc', 'bb', 'aa'] ● Chequeo de Saltos: >>> L [123, 'spam', 'NI'] >>> L[99] ...error text omitted... IndexError: list index out of range >>> L[99] = 1 ...error text omitted... IndexError: list assignment index out of range ● Para incrementar una lista utilice metodo L.append() Python Training Course ● Anidamiento (Nesting): >>> M = [[1, 2, 3], # Una matriz 3 x 3 matrix, como listas anidada [4, 5, 6], [7, 8, 9]] >>> M [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> M[1] # valor en fila 2 [4, 5, 6] >>> M[1][2] #ubica fila 2, entonces extrae item 3 dentro de esa fila 6 ● Comprensión de listas: Procesar estructuras de listas >>> col2 = [row[1] for row in M] # recuperar items en columna 2 >>> col2 [2, 5, 8] >>> M # La matriz no ha cambiado [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ● Python Training Course 6. Tipos de Objetos Diccionarios ● No son secuencias, sino conocidos como mapeos. Igualmente son colecciones de otros objetos. ● Mutables! ● Codificados entre corchetes ● >>> D = {'food': 'Spam', 'quantity': 4, 'color': 'pink'} >>> D['food'] # captura valor de llave 'food' 'Spam' >>> D['quantity'] += 1 # Agrega 1 a valor 'quantity' >>> D {'food': 'Spam', 'color': 'pink', 'quantity': 5} Python Training Course ● Construcción de diccionario: >>> >>> >>> >>> >>> >>> Bob ● D = {} D['name'] = 'Bob' # Crear llave por asignación D['job'] = 'dev' D['age'] = 40 D{'age': 40, 'job': 'dev', 'name': 'Bob'} print D['name'] Anidamiento en diccionario: rec = {'name': {'first': 'Bob', 'last': 'Smith'}, 'job': ['dev', 'mgr'],'age': 40.5} >>> rec['name'] # 'Name' {'last': 'Smith', 'first': 'Bob'} es un diccionario anidado >>> rec['name']['last'] # valor del indice last en el dicc anidado 'Smith' >>> rec['job'] # 'Job' is a nested list ['dev', 'mgr'] >>> rec['job'][-1] # Index the nested list 'mgr' >>> rec['job'].append('janitor') # aumenta para Bob en job descripción >>> rec {'age': 40.5, 'job': ['dev', 'mgr', 'janitor'], 'name': {'last': 'Smith', 'first':'Bob'}} Python Training Course ● Limpiar la memoria de una variable (diccionario), actualmente (garbage collector) >>> rec = 0 # con esto, el espacio de objeto es reclamado. ● Ordenamiento de diccionarios: >>> D = {'a': 1, 'b': 2, 'c': 3} >>> D {'a': 1, 'c': 3, 'b': 2} Utilizando estructura loop podemos ordenar el diccionario: >>> Ks = D.keys( ) # lista de llaves desordenada >>> Ks ['a', 'c', 'b'] >>> Ks.sort( ) # lista de llaves ordenada >>> Ks ['a', 'b', 'c'] >>> for key in Ks: # Iterar dentro though sorted keys print key, '=>', D[key] a => 1 b => 2 c => 3 Python Training Course ● Ordenamiento, utilizando función sorted >>> D {'a': 1, 'c': 3, 'b': 2} >>> for key in sorted(D): print key, '=>', D[key] a => 1 b => 2 c => 3 ● Optimización en la iteración (protocolo de iteración): >>> squares = [x ** 2 for x in [1, 2, 3, 4, 5]] >>> squares [1, 4, 9, 16, 25] Utilizando loop for: >>> squares = [] >>> for x in [1, 2, 3, 4, 5]: squares.append(x ** 2) >>> squares [1, 4, 9, 16, 25] ● Python Training Course 6. Tipos de Objetos Tuplas ● ● Secuencia similar a una lista pero inmutable como los strings. Operaciones básicas: >>> T = (1, 2, 3, 4) # A 4-item tuple >>> len(T) # Tamaño 4 >> T + (5, 6) # Concatenación (1, 2, 3, 4, 5, 6) >>> T[0] # Indexado, cortado y mas 1 ● Por que tuplas: Por la facilidad de uso en usar una especie de lista pero donde sus valores sean inmutables. Python Training Course 6. Tipos de Objetos Archivos ● ● ● ● Principal interface para el acceso a archivos externos! Escritura >>> f = open('data.txt', 'w') # Crea un nuevo archivo de escritura >>> f.write('Hello\n') # Escribe las cadenas a disco >>> f.write('world\n') >>> f.close( ) # Cierra el buffer de escritura Lectura de archivo: >>> f = open('data.txt') # 'r' is the default processing mode >>> bytes = f.read( ) # Read entire file into a string >>> bytes 'Hello\nworld\n' >>> print bytes # Imprime caracteres de control Hello world >>> bytes.split( ) # Contenido de archivo es siempre una cadena ['Hello', 'world'] Otros tools similares a manejo de archivo: pipes, fifos, sockets, archivo de acceso por llaves, persistencia en objetos, basado en descriptores, relacional y base de datos de interfaz orientada a objetos. Python Training Course 6. Tipos de Objetos Otros tipos core ● Set: operaciones lógicas de conjuntos >>> X = set('spam') >>> Y = set(['h', 'a', 'm']) # 2 sets de secuencias >>> X, Y (set(['a', 'p', 's', 'm']), set(['a', 'h', 'm'])) >>> X & Y # Interseccion set(['a', 'm']) >>> X | Y # Union set(['a', 'p', 's', 'h', 'm']) >>> X – Y # Diferencia set(['p', 's']) ● Python Training Course ● ● ● ● ● >>> import decimal # Decimales >>> d = decimal.Decimal('3.141') >>> d + 1 Decimal("4.141") >>> 1 > 2, 1 < 2 # Booleanos (False, True) >>> bool('spam') True >>> X = None # None asignación >>> print X None >>> L = [None] * 100 # Inicializar una lista con 100 Nones >>> L [None, None, None, None, None, None, None, None, None, None, None, None, None, ...a list of 100 Nones...] >>> type(L) # Tipos <type 'list'> >>> type(type(L)) # Incluso, types son objetos <type 'type'> ● Python Training Course 14. Sentencias en Python Python Training Course 14. Sentencias en Python Python Training Course 14. Sentencias en Python ● Formato general: Header line: Nested statement block ● Lo que python remueve: ● Los paréntesis son opcionales. ● Fin de linea es fin de sentencias (sin ;) ● Fin de Sangrado es fin de bloque Python Training Course ● Casos especiales en sentencias a = 1; b = 2; print a + b # tres sentencias en una linea ● ● ● ● ● mlist = [111, 222, 333] X = (A + B + C + D) if (A == 1 and B == 2 and C == 3): print 'spam' * 3 X = A + B + \ C + D Caso especial de regla de Bloque: if x > y: print x Python Training Course 15. Sentencias en Python Loops interactivos ● Loop interactivo simple while True: reply = raw_input('Enter text:') if reply == 'stop': break print reply.upper( ) ● Manejo de errores al testear entrada while True: reply = raw_input('Enter text:') if reply == 'stop': break elif not reply.isdigit( ): print 'Bad!' * 8 else: print int(reply) ** 2 print 'Bye' Python Training Course ● Manejo de errores usando setencia try while True: reply = raw_input('Enter text:') if reply == 'stop': break try: num = int(reply) except: print 'Bad!' * 8 else: print int(reply) ** 2 print 'Bye' Python Training Course 16. Sentencias de asignación ● Asignación crea referencias a objeto ● Variables se crean al asignarse ● ● Nombres deben ser asignados antes de ser referenciados Asignaciones implicitas: import, from, def, class, function arguments Python Training Course 16. Sentencias de asignación Formas al asignar ● spam = 'Spam' ● [spam, ham] = ['yum', 'YUM'] ● a, b, c, d = 'spam' ● spam = ham = 'lunch' ● Spams += 42 >>> >>> >>> >>> (1, >>> >>> (1, nudge = 1 wink = 2 A, B = nudge, wink # Tuple assignment A, B # Like A = nudge; B = wink 2) [C, D] = [nudge, wink] # List assignment C, D 2) >>> >>> >>> >>> (2, nudge = 1 wink = 2 nudge, wink = wink, nudge # Tuples: swaps values nudge, wink # Like T = nudge; nudge = wink; wink = T 1) Python Training Course 16. Sentencias de asignación Asignación múltiple ● ● >>> a = b = c = 'spam' >>> a, b, c ('spam', 'spam', 'spam') >>> c = 'spam' >>> b = c >>> a = b ● Python Training Course