Python Training Course - pycartagena.pbworks.compycartagena.pbworks.com/f/python_training_r1.pdf ·...

84
Python Training Course Python Training Course Wilderman Ceren Ingeniero de Sistemas – Especialista en Telecomunicaciones Consultor y experto en soluciones informáticas basadas en software libre

Transcript of Python Training Course - pycartagena.pbworks.compycartagena.pbworks.com/f/python_training_r1.pdf ·...

Python Training Course

Python Training Course

Wilderman CerenIngeniero de Sistemas – Especialista en

TelecomunicacionesConsultor 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

Contenido20. 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

Contenido23. 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

– Creación– Uso (import, from)– Namespaces– Recargar un módulo

● Paquetes– 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

Contenido27. 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:

● print 'hola mundo'● print 2 ** 100

– Generar con cualquier editor de texto● Extensión .py

– > Python script1.pyhola mundo1267650600228229401496703205376

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 # exponencialprint 'El lado brillante' + 'de la vida' #concatenar

python spam.py256El lado brillante de la vida

Python Training Course

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 .pyEjecute 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 ObjetosIncorporados “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 ObjetosTipo de datos esenciales● Números: 1234, 3.1415, 999L, 3+4j

● Cadenas: 'spam', “abcd's”

● 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.

● Fuerte en las operaciones válidas que correspondan con la naturaleza del objeto.

Python Training Course

6. Tipos de ObjetosNúmeros

● Enteros (integers): >>> 123 + 222

● Punto flotante (float): >>> 1.5 * 4

● Ilimitada-precision (long integer con parte imaginaria): >>> 2 ** 1001267650600228229401496703205376L

● Decimal de precisión flexible● Sets

Python Training Course

6. Tipos de ObjetosNúmeros

● math: módulo con colección matemática!>>> import math>>> math.pi3.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 ObjetosStrings

● Guardan información textual o una arbitraria colección de bytes.

● Una secuencia de un caracter● Operaciones con strings:>>> S = 'Spam'>>> len(S)4>>> S[0]'S'>>> S[1]'p'

Python Training Course

6. Tipos de ObjetosStrings

● 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 ObjetosStrings

● 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 ObjetosStrings

● 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 ObjetosStrings

● Algunos métodos específicos:>>> S.find('pa') #encuentra offset1>>> 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 ObjetosStrings

● Multilinea:>>> msg = “““aaaaaaabbb'''bbbbbb”””

● Patterns:>>> import re>>> match = re.match('Hello[\t]*(.*)world', 'Hello Python World')>>> match.group(1)'Python '

Python Training Course

6. Tipos de ObjetosListas

● 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 fila6

● 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 ObjetosDiccionarios

● 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:>>> 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']Bob

● Anidamiento en diccionario:rec = {'name': {'first': 'Bob', 'last': 'Smith'}, 'job': ['dev', 'mgr'],'age': 40.5}

>>> rec['name'] # 'Name' es un diccionario anidado{'last': 'Smith', 'first': 'Bob'}

>>> 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 keysprint key, '=>', D[key]a => 1b => 2c => 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 => 1b => 2c => 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 ObjetosTuplas

● 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ño4>> T + (5, 6) # Concatenación(1, 2, 3, 4, 5, 6)>>> T[0] # Indexado, cortado y mas1

● 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 ObjetosArchivos● 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 controlHelloworld>>> 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 ObjetosOtros 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 # Interseccionset(['a', 'm'])

>>> X | Y # Unionset(['a', 'p', 's', 'h', 'm'])

>>> X – Y # Diferenciaset(['p', 's'])

Python Training Course

● >>> import decimal # Decimales>>> d = decimal.Decimal('3.141')>>> d + 1Decimal("4.141")

● >>> 1 > 2, 1 < 2 # Booleanos(False, True)>>> bool('spam')True

● >>> X = None # None asignación>>> print XNone

● >>> 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 andB == 2 andC == 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 PythonLoops interactivos

● Loop interactivo simple

while True:reply = raw_input('Enter text:')if reply == 'stop': breakprint reply.upper( )

● Manejo de errores al testear entrada

while True:reply = raw_input('Enter text:')if reply == 'stop':

breakelif not reply.isdigit( ):

print 'Bad!' * 8else:

print int(reply) ** 2print 'Bye'

Python Training Course

● Manejo de errores usando setencia try

while True:reply = raw_input('Enter text:')if reply == 'stop': breaktry:

num = int(reply)except:

print 'Bad!' * 8else:

print int(reply) ** 2print '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ónFormas al asignar

● spam = 'Spam'● [spam, ham] = ['yum', 'YUM']● a, b, c, d = 'spam'● spam = ham = 'lunch'● Spams += 42

>>> nudge = 1>>> wink = 2>>> A, B = nudge, wink # Tuple assignment>>> A, B # Like A = nudge; B = wink(1, 2)>>> [C, D] = [nudge, wink] # List assignment>>> C, D(1, 2)

>>> nudge = 1>>> wink = 2>>> nudge, wink = wink, nudge # Tuples: swaps values>>> nudge, wink # Like T = nudge; nudge = wink; wink = T(2, 1)

Python Training Course

16. Sentencias de asignaciónAsignación múltiple

● >>> a = b = c = 'spam'>>> a, b, c('spam', 'spam', 'spam')

● >>> c = 'spam'>>> b = c>>> a = b