Curso de Python
Washington Bastidas Santos
Ing. en Sistemas – Técnico SIG
CNEL EP
Python
Interpretado
Tipado dinámico
Fuertemente tipado
Multiplataforma
Orientado a objetos
Interpretado
Código intermedio generando archivos .pyc
No permite
tratar a una
variable
como si
fuera de un
tipo distinto
al que tiene
Fuertemente Tipado
Multiplataforma
Paradigmas de Programación
Imperativa
Orientado a Objetos
Funcional
Orientada a aspectos
Creador
• Guido van Rossum
• Benevolent
Dictator for Life de
Python
• Creo el lenguaje de
programación
mientras pasaba la
Navidad.
Por
qué
Python?
Por que Python?
• Usado por grandes compañías.
• Fácil de aprender y mantener.
• Excelente para principiantes y
expertos.
• Libre y Open Source.
• Una gran cantidad de librerías.
• Una gran comunidad.
• Integrado con ArcGIS.
IDE
• Un buen IDE debe de
tener como mínimo:
• Un editor con
autocompletado de
código.
• Plantillas de código.
• Resaltar la sintaxis.
• Explorador de código
para funciones y clases.
• Herramientas para
debugging y test
unitarios.
Eclipse + PyDev
IDLE
Tipo de Datos, Variables y Funciones
Variables
• Python usa asignación
dinámica de las
variables.
• Valor definido por el
tipo.
• No puede comenzar con
dígitos ni se debe usar
palabras claves.
• La varible null en python
es none.
Tipos de Datos - Números
• Integer (Enteros)
– Int
– Long (23L)
• Float (decimales)
– Float (0,3)
– Double
• import math para
operaciones
matemáticas NOTA: Si se quiere una operación con decimales, al menos uno de los 2
elementos debe de tener un número decimal o poner un número entre la
función float()
Tipos de Datos - String
"Es una colección
ordenada de caracteres"
• En python comillas simples o dobles son lo mismo.
• caracteres especiales (n, t).
• Puede ser precedidas por U(Unicode) y r(Raw).
• Operación + para concatenar
• Función str() para convertir a string un elemento.
Substring corchetes: fruit[1:3]  "an"
Tipo de Datos - Booleano
• True o False
• Usado en expresiones
condicionales y bucles.
Operador Descripción Ejemplo
and ¿se cumple a y b? r = True and False # r es False
or ¿se cumple a o b? r = True or False # r es True
not No a r = not True # r es False
Operador Descripción Ejemplo
== ¿son iguales a y b? r = 5 == 3 # r es False
!= ¿son distintos a y b? r = 5 != 3 # r es True
< ¿es a menor que b? r = 5 < 3 # r es False
> ¿es a mayor que b? r = 5 > 3 # r es True
<= ¿es a menor o igual que b? r = 5 <= 5 # r es True
>= ¿es a mayor o igual que b? r = 5 >= 3 # r es True
Operadores Lógicos
Elementos de comparación
Tipos de Datos - Listas
• La lista es un tipo de colección ordenada.
• La lista esta rodeada por corchetes [], y están separados
por comas (,).
– miLista = [1, 2, 4, 8, 16, 32]
• Entre los métodos para manipula la lista estan:
– sort() , ordena los elementos
– append() , agrega el elemento que esta dentro del
paréntesis.
– extend(), concatenar lista, ej. miLista ([10,20, 32])
• Para acceder a una lista se puede poner el índice de la
ubicación del elemento (miLista[1] = 2) o recorrer la lista
mediante un for (for l in miLista)
[L2.append(x) for x in miLista if x not in L2]
Tipos de Datos - Tuplas
Tuplas
• Contiene una secuencia de
valores que se definen con ().
• No posee mecanismos de
modificación.
• Inmutables.
• Menor consumo de memoria.
• Se accede mediante corchete
[] y poniendo la posición del
elemento.
Diccionarios
• Colecciones con clave y valor.
Se define con llaves {}.
d = {"Love Actually": "Richard
Curtis", "Kill Bill":
"Tarantino"}
• Se implementan con
diccionarios Hash.
• Solo se accede mediante la
clave del elementos.
• Mutable
• Para iterar por los elementos
se puede utilizar
for k, v in d.iteritems()
Funciones
• len() : se obtiene la
cantidad de elementos en
listas, tuplas o colecciones.
Diccionario
• d.has_key(k): comprobas si
existe la clave k en la lista d.
• d.items(): Se obtiene una
lista de tuplas con clave-
valor
• d.keys(): Devuelve una lista
de claves de d.
• d.values(): devuelve una
lista de valores de d.
Lista
• l.append(o): agrega el
elemento o en la lista.
• l.count(v): devuelve el
numero de veces que se
repite v.
• l.index(v): devuelve la
índice del valor a buscar.
Condiciones
• Sentencia if / elif / else
• Controla si la condición
es cierta.
• elif se utiliza cuando se
tiene condiciones
múltiples.
if x == 1:
print ‘x es 1’
elif x == 2:
print ‘x es 2’
else:
print ‘x es
desconocido’
var = "par" if (num % 2 == 0)
else "impar"
Lazos
• La lazo while repite una acción
hasta que la condición sea
verdadera.
• Un lazo for repite un bloque
de código para cada elemento
de una secuencia.
• Se puede utilizar para un
conjunto de números la
función range(3), comienza
de 0 y termina en 3.
• La palabra clave break rompe
los lazos y continue continua
con la siguiente iteración.
i = 0
while i <= 10:
print i
i += 1
dictLayers = {"Camino":"Linea",
"Parque":"Poligono"}
lstLayers = dictLayers.keys()
for x in lstLayers:
print dictLayers[x]
for x in range(3):
print x
Lectura de Línea / Archivo
Leer por consola
• Para poder leer
alguna sentencia
ingresada por el
usuario del
programa podemos
usar la siguiente
sentencia:
dato = print
raw_input("¿Cual
es tu nombre?")
Archivo
• Para leer archivos se necesita
importar el modulo os así
como utilizar los siguientes
comandos:
– f = open("text","r"),leer
archivo , existen 3 modos de
lectura r (leer) w (escribir) y a
(agregar)
– linea = f.readlines(), lee
todas las líneas del archivo, se
itera con for.
– f.write(texto) escribe texto en
el archivo
– f.close() cierra el archivo.
Manejo de Errores
• Cuando un error ocurre
python dispara una
excepción.
• Con la palabra raise
puedes invocar una
excepción.
• Se controlan mediante
try – except – (finally).
• Para saber en que linea
esta el error utilizamos la
siguiente sentencia
import sys
#Dentro de la excepcion
tb = sys.exc_info()[2]
print tb.tb_lineno
try:
if arcpy.CheckExtension("3D") ==
"Disponible":
arcpy.CheckOutExtension("3D")
else:
#Envía una excepción
personalizada.
raise ErrorLicencia
# Hacer algo con la licencia
print "Disponible"
except ErrorLicencia:
print "Licencia no disponible"
except Exception as e:
print e.message
finally:
#Check in the 3D Analyst extension
arcpy.CheckInExtension("3D")
Programación Funcional
• Programación se basa
en funciones, esto
según su definición
matemática, no es una
simple rutina.
• Funciones de orden
superior, pasar
funciones como
parámetro y retorno.
• Interación de orden
superior sobre listas
def ejecutar(tipo):
def linea_comando():
print "Por Linea Comando"
def pantalla():
print "Por Pantalla"
def servicio_web():
print "Por Web Service"
lang_func = {"lc":
linea_comando,"pt": pantalla,
"WS": servicio_web}
ejecutar[tipo]
f = ejecutar("pt")
f()
Programación Funcional - Lambda
• Permite crear funciones
anónimas, las cuales no
podrán ser referenciadas
más tarde.
• Las funciones lambda se
construyen mediante el
operador lambda, los
parámetros de la función
separados por comas,
SIN paréntesis, dos
puntos (:) y el código de
la función.
l = [1, 2, 3]
l2 = filter(lambda n: n %
2.0 == 0, l)
Map: La función map aplica una
función a cada elemento de una
secuencia
l2 = [n ** 2 for n in l]
Filter: Verifica que los elementos de
la secuencia cumplan una
condición, devuelve los true.
l2 = [n for n in l if n % 2.0 ==
0]
Compresión de lista
l = [0, 1, 2, 3]
m = ["a", "b"]
n = [s * v for s in m
for v in l
if v > 0]
Expresiones Regulares
Secuencias especiales
A Inicio del texto.
b limites de una palabra entre w y W
d número
D no numérico
s espacios en blanco [ tnrfv]
S no espacios en blancos.
w Alfanuméricos.
W No alfanuméricos.
Z fin del texto
Caracteres especiales
 escape de caracteres especiales.
. Busca cualquier carácter menos n.
^ Busca al inicio del texto.
$ Busca al final del texto.
[5b-d] encuentre cualquier carácter que
este en el rango'5', 'b', 'c' or 'd‘
R|S encuentre R o S
[^a-c] no busca a ni b ni c.
Cantidades
* 0 o más (agregar ? para que no sea
codicioso)
+ 1 o más
? 0 o 1
{m} exactamente m veces.
(…) grupo
Expresiones Regulares
• Es una secuencia de caracteres que forma un patrón de
búsqueda, Wikipedia.
• Se utiliza el modulo re.
• Ejemplo de expresión : match = re.search(pat, str)
• buscar patrones, dividir grupos y reemplazo de caracteres.
#Buscar una palabra que comience con p, j o c continúe con ython y
termine con una secuencia de 0 a 9
re.match(“[pjc]ython[0-9]”, “python2”) #Encontrado
#Buscar una palabra que comience con http y encuentre un punto, crear
un nuevo grupo con una palabra que sea de 3 digitos
mo = re.match(“http://(.+)(.{3})”, “http://eluniverso.com”)
print mo.groups()
(‘eluniverso.com’, ‘com’) #Resultado
match = re.search(r'w+@w+', str)
Lista de extras
Fotos:
• Slide 2: http://kidfocused.com/mom-wakes-to-python-wrapped-around-toddler/
• Slide 4: http://samdelacruz.blogspot.com/2007/06/object-oriented-analysis-and-design.htm
• Silde 7: http://es.wikipedia.org/wiki/Guido_van_Rossum#mediaviewer/Archivo:Guido_van_Rossum_OSCON_2006.jpg
• Slide 8: http://www.careerhubblog.com/.a/6a00d834516a5769e20168e7e2eb2a970c-pi

Curso de Python

  • 1.
    Curso de Python WashingtonBastidas Santos Ing. en Sistemas – Técnico SIG CNEL EP
  • 2.
  • 3.
  • 4.
    No permite tratar auna variable como si fuera de un tipo distinto al que tiene Fuertemente Tipado
  • 5.
  • 6.
    Paradigmas de Programación Imperativa Orientadoa Objetos Funcional Orientada a aspectos
  • 7.
    Creador • Guido vanRossum • Benevolent Dictator for Life de Python • Creo el lenguaje de programación mientras pasaba la Navidad.
  • 8.
  • 9.
    Por que Python? •Usado por grandes compañías. • Fácil de aprender y mantener. • Excelente para principiantes y expertos. • Libre y Open Source. • Una gran cantidad de librerías. • Una gran comunidad. • Integrado con ArcGIS.
  • 10.
    IDE • Un buenIDE debe de tener como mínimo: • Un editor con autocompletado de código. • Plantillas de código. • Resaltar la sintaxis. • Explorador de código para funciones y clases. • Herramientas para debugging y test unitarios.
  • 11.
  • 12.
  • 13.
    Tipo de Datos,Variables y Funciones
  • 14.
    Variables • Python usaasignación dinámica de las variables. • Valor definido por el tipo. • No puede comenzar con dígitos ni se debe usar palabras claves. • La varible null en python es none.
  • 15.
    Tipos de Datos- Números • Integer (Enteros) – Int – Long (23L) • Float (decimales) – Float (0,3) – Double • import math para operaciones matemáticas NOTA: Si se quiere una operación con decimales, al menos uno de los 2 elementos debe de tener un número decimal o poner un número entre la función float()
  • 16.
    Tipos de Datos- String "Es una colección ordenada de caracteres" • En python comillas simples o dobles son lo mismo. • caracteres especiales (n, t). • Puede ser precedidas por U(Unicode) y r(Raw). • Operación + para concatenar • Función str() para convertir a string un elemento. Substring corchetes: fruit[1:3]  "an"
  • 17.
    Tipo de Datos- Booleano • True o False • Usado en expresiones condicionales y bucles. Operador Descripción Ejemplo and ¿se cumple a y b? r = True and False # r es False or ¿se cumple a o b? r = True or False # r es True not No a r = not True # r es False Operador Descripción Ejemplo == ¿son iguales a y b? r = 5 == 3 # r es False != ¿son distintos a y b? r = 5 != 3 # r es True < ¿es a menor que b? r = 5 < 3 # r es False > ¿es a mayor que b? r = 5 > 3 # r es True <= ¿es a menor o igual que b? r = 5 <= 5 # r es True >= ¿es a mayor o igual que b? r = 5 >= 3 # r es True Operadores Lógicos Elementos de comparación
  • 18.
    Tipos de Datos- Listas • La lista es un tipo de colección ordenada. • La lista esta rodeada por corchetes [], y están separados por comas (,). – miLista = [1, 2, 4, 8, 16, 32] • Entre los métodos para manipula la lista estan: – sort() , ordena los elementos – append() , agrega el elemento que esta dentro del paréntesis. – extend(), concatenar lista, ej. miLista ([10,20, 32]) • Para acceder a una lista se puede poner el índice de la ubicación del elemento (miLista[1] = 2) o recorrer la lista mediante un for (for l in miLista) [L2.append(x) for x in miLista if x not in L2]
  • 19.
    Tipos de Datos- Tuplas Tuplas • Contiene una secuencia de valores que se definen con (). • No posee mecanismos de modificación. • Inmutables. • Menor consumo de memoria. • Se accede mediante corchete [] y poniendo la posición del elemento. Diccionarios • Colecciones con clave y valor. Se define con llaves {}. d = {"Love Actually": "Richard Curtis", "Kill Bill": "Tarantino"} • Se implementan con diccionarios Hash. • Solo se accede mediante la clave del elementos. • Mutable • Para iterar por los elementos se puede utilizar for k, v in d.iteritems()
  • 20.
    Funciones • len() :se obtiene la cantidad de elementos en listas, tuplas o colecciones. Diccionario • d.has_key(k): comprobas si existe la clave k en la lista d. • d.items(): Se obtiene una lista de tuplas con clave- valor • d.keys(): Devuelve una lista de claves de d. • d.values(): devuelve una lista de valores de d. Lista • l.append(o): agrega el elemento o en la lista. • l.count(v): devuelve el numero de veces que se repite v. • l.index(v): devuelve la índice del valor a buscar.
  • 21.
    Condiciones • Sentencia if/ elif / else • Controla si la condición es cierta. • elif se utiliza cuando se tiene condiciones múltiples. if x == 1: print ‘x es 1’ elif x == 2: print ‘x es 2’ else: print ‘x es desconocido’ var = "par" if (num % 2 == 0) else "impar"
  • 22.
    Lazos • La lazowhile repite una acción hasta que la condición sea verdadera. • Un lazo for repite un bloque de código para cada elemento de una secuencia. • Se puede utilizar para un conjunto de números la función range(3), comienza de 0 y termina en 3. • La palabra clave break rompe los lazos y continue continua con la siguiente iteración. i = 0 while i <= 10: print i i += 1 dictLayers = {"Camino":"Linea", "Parque":"Poligono"} lstLayers = dictLayers.keys() for x in lstLayers: print dictLayers[x] for x in range(3): print x
  • 23.
    Lectura de Línea/ Archivo Leer por consola • Para poder leer alguna sentencia ingresada por el usuario del programa podemos usar la siguiente sentencia: dato = print raw_input("¿Cual es tu nombre?") Archivo • Para leer archivos se necesita importar el modulo os así como utilizar los siguientes comandos: – f = open("text","r"),leer archivo , existen 3 modos de lectura r (leer) w (escribir) y a (agregar) – linea = f.readlines(), lee todas las líneas del archivo, se itera con for. – f.write(texto) escribe texto en el archivo – f.close() cierra el archivo.
  • 24.
    Manejo de Errores •Cuando un error ocurre python dispara una excepción. • Con la palabra raise puedes invocar una excepción. • Se controlan mediante try – except – (finally). • Para saber en que linea esta el error utilizamos la siguiente sentencia import sys #Dentro de la excepcion tb = sys.exc_info()[2] print tb.tb_lineno try: if arcpy.CheckExtension("3D") == "Disponible": arcpy.CheckOutExtension("3D") else: #Envía una excepción personalizada. raise ErrorLicencia # Hacer algo con la licencia print "Disponible" except ErrorLicencia: print "Licencia no disponible" except Exception as e: print e.message finally: #Check in the 3D Analyst extension arcpy.CheckInExtension("3D")
  • 25.
    Programación Funcional • Programaciónse basa en funciones, esto según su definición matemática, no es una simple rutina. • Funciones de orden superior, pasar funciones como parámetro y retorno. • Interación de orden superior sobre listas def ejecutar(tipo): def linea_comando(): print "Por Linea Comando" def pantalla(): print "Por Pantalla" def servicio_web(): print "Por Web Service" lang_func = {"lc": linea_comando,"pt": pantalla, "WS": servicio_web} ejecutar[tipo] f = ejecutar("pt") f()
  • 26.
    Programación Funcional -Lambda • Permite crear funciones anónimas, las cuales no podrán ser referenciadas más tarde. • Las funciones lambda se construyen mediante el operador lambda, los parámetros de la función separados por comas, SIN paréntesis, dos puntos (:) y el código de la función. l = [1, 2, 3] l2 = filter(lambda n: n % 2.0 == 0, l) Map: La función map aplica una función a cada elemento de una secuencia l2 = [n ** 2 for n in l] Filter: Verifica que los elementos de la secuencia cumplan una condición, devuelve los true. l2 = [n for n in l if n % 2.0 == 0] Compresión de lista l = [0, 1, 2, 3] m = ["a", "b"] n = [s * v for s in m for v in l if v > 0]
  • 27.
    Expresiones Regulares Secuencias especiales AInicio del texto. b limites de una palabra entre w y W d número D no numérico s espacios en blanco [ tnrfv] S no espacios en blancos. w Alfanuméricos. W No alfanuméricos. Z fin del texto Caracteres especiales escape de caracteres especiales. . Busca cualquier carácter menos n. ^ Busca al inicio del texto. $ Busca al final del texto. [5b-d] encuentre cualquier carácter que este en el rango'5', 'b', 'c' or 'd‘ R|S encuentre R o S [^a-c] no busca a ni b ni c. Cantidades * 0 o más (agregar ? para que no sea codicioso) + 1 o más ? 0 o 1 {m} exactamente m veces. (…) grupo
  • 28.
    Expresiones Regulares • Esuna secuencia de caracteres que forma un patrón de búsqueda, Wikipedia. • Se utiliza el modulo re. • Ejemplo de expresión : match = re.search(pat, str) • buscar patrones, dividir grupos y reemplazo de caracteres. #Buscar una palabra que comience con p, j o c continúe con ython y termine con una secuencia de 0 a 9 re.match(“[pjc]ython[0-9]”, “python2”) #Encontrado #Buscar una palabra que comience con http y encuentre un punto, crear un nuevo grupo con una palabra que sea de 3 digitos mo = re.match(“http://(.+)(.{3})”, “http://eluniverso.com”) print mo.groups() (‘eluniverso.com’, ‘com’) #Resultado match = re.search(r'w+@w+', str)
  • 29.
    Lista de extras Fotos: •Slide 2: http://kidfocused.com/mom-wakes-to-python-wrapped-around-toddler/ • Slide 4: http://samdelacruz.blogspot.com/2007/06/object-oriented-analysis-and-design.htm • Silde 7: http://es.wikipedia.org/wiki/Guido_van_Rossum#mediaviewer/Archivo:Guido_van_Rossum_OSCON_2006.jpg • Slide 8: http://www.careerhubblog.com/.a/6a00d834516a5769e20168e7e2eb2a970c-pi