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