Está en la página 1de 29

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
Fuertemente Tipado

No permite
tratar a una
variable
como si
fuera de un
tipo distinto
al que tiene
Multiplataforma
Paradigmas de Programación

Orientado a Objetos
Imperativa
Orientada a aspectos

Funcional
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
Operadores aritméticos
• Integer (Enteros) Operador Descripción Ejemplo
+ Suma r = 3 + 2 # r es 5
– Int
- Resta r = 4 - 7 # r es -3
– Long (23L) - Negación r = -7 # r es -7
• Float (decimales) * Multiplicación r = 2 * 6 # r es 12
** Exponente r = 2 ** 6 # r es 64
– Float (0,3) / División r = 3.5 / 2 # r es 1.75
– Double // División entera r = 3.5 // 2 # r es 1.0
• import math para % Módulo r = 7 % 2 # r es 1

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"
Substring corchetes: fruit[1:3]  "an"

• 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.
Tipo de Datos - Booleano
• True o False Elementos de comparación
Operador Descripción Ejemplo
• Usado en expresiones == ¿son iguales a y b? r = 5 == 3 # r es False
!= ¿son distintos a y b? r = 5 != 3 # r es True
condicionales y bucles. < ¿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
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
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 Diccionarios
• Contiene una secuencia de • Colecciones con clave y valor. Se
valores que se definen con (). define con llaves {}.
d = {"Love Actually": "Richard
• No posee mecanismos de Curtis", "Kill Bill": "Tarantino"}
modificación. • Se implementan con diccionarios
• Inmutables. Hash.
• Menor consumo de memoria. • Solo se accede mediante la clave
del elementos.
• Se accede mediante corchete
• Mutable
[] y poniendo la posición del
elemento. • Para iterar por los elementos se
puede utilizar
for k, v in d.iteritems()
Funciones
• len() : se obtiene la cantidad Lista
de elementos en listas, tuplas
o colecciones. • l.append(o): agrega el
Diccionario elemento o en la lista.
• d.has_key(k): comprobas si • l.count(v): devuelve el
existe la clave k en la lista d. numero de veces que se
• d.items(): Se obtiene una lista
repite v.
de tuplas con clave-valor
• d.keys(): Devuelve una lista de • l.index(v): devuelve la
claves de d. índice del valor a
• d.values(): devuelve una lista buscar.
de valores de d.
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 var = "par" if (num % 2 == 0)
desconocido’ else "impar"
Lazos
i = 0
• La lazo while repite una acción while i <= 10:
hasta que la condición sea print i
verdadera. i += 1

• Un lazo for repite un bloque dictLayers = {"Camino":"Linea",


"Parque":"Poligono"}
de código para cada elemento lstLayers = dictLayers.keys()
de una secuencia. for x in lstLayers:
print dictLayers[x]
• Se puede utilizar para un
conjunto de números la for x in range(3):
función range(3), comienza print x
de 0 y termina en 3.
• La palabra clave break rompe
los lazos y continue continua
con la siguiente iteración.
Lectura de Línea / Archivo
Leer por consola Archivo
• Para poder leer • Para leer archivos se necesita
alguna sentencia importar el modulo os así como
utilizar los siguientes comandos:
ingresada por el – f = open("text","r"),leer archivo ,
usuario del existen 3 modos de lectura r (leer) w
programa podemos (escribir) y a (agregar)
– linea = f.readlines(), lee todas
usar la siguiente las líneas del archivo, se itera con
sentencia: for.
dato = print – f.write(texto) escribe texto en el
raw_input("¿Cual archivo
es tu nombre?") – f.close() cierra el archivo.
Manejo de Errores
• Cuando un error ocurre
try:
if arcpy.CheckExtension("3D") ==
python dispara una
excepción.
"Disponible": • Con la palabra raise puedes
arcpy.CheckOutExtension("3D") invocar una excepción.
else:
#Envía una excepción personalizada. • Se controlan mediante try –
raise ErrorLicencia
# Hacer algo con la licencia
except – (finally).
print "Disponible" • Para saber en que linea esta
except ErrorLicencia:
print "Licencia no disponible" el error utilizamos la
except Exception as e: siguiente sentencia
print e.message
finally:
#Check in the 3D Analyst extension import sys
arcpy.CheckInExtension("3D") #Dentro de la excepcion
tb = sys.exc_info()[2]
print tb.tb_lineno
Programación Funcional
• Programación se basa en
funciones, esto según su def ejecutar(tipo):
definición matemática, def linea_comando():
print "Por Linea Comando"
no es una simple rutina. def pantalla():
• Funciones de orden print "Por Pantalla"
def servicio_web():
superior, pasar print "Por Web Service"
lang_func = {"lc":
funciones como linea_comando,"pt": pantalla,
"WS": servicio_web}
parámetro y retorno. ejecutar[tipo]
• Interación de orden f = ejecutar("pt")
f()
superior sobre listas
Programación Funcional - Lambda
• Permite crear funciones Map: La función map aplica una
anónimas, las cuales no función a cada elemento de una
podrán ser referenciadas más secuencia
tarde. l2 = [n ** 2 for n in l]

• Las funciones lambda se Filter: Verifica que los elementos de la


construyen mediante el secuencia cumplan una condición,
operador lambda, los devuelve los true.
parámetros de la función l2 = [n for n in l if n % 2.0 == 0]
separados por comas, SIN
paréntesis, dos puntos (:) y el Compresión de lista
código de la función. l = [0, 1, 2, 3]
l = [1, 2, 3] m = ["a", "b"]
l2 = filter(lambda n: n % n = [s * v for s in m
2.0 == 0, l) for v in l
if v > 0]
Expresiones Regulares
Secuencias especiales Caracteres especiales
\ escape de caracteres especiales.
\A Inicio del texto. . Busca cualquier carácter menos \n.
\b limites de una palabra entre \w ^ Busca al inicio del texto.
y \W $ Busca al final del texto.
[5b-d] encuentre cualquier carácter que este
\d número en el rango'5', 'b', 'c' or 'd‘
R|S encuentre R o S
\D no numérico
[^a-c] no busca a ni b ni c.
\s espacios en blanco [ \t\n\r\f\v] Cantidades
* 0 o más (agregar ? para que no sea
\S no espacios en blancos. codicioso)
\w Alfanuméricos. + 1 o más
?0o1
\W No alfanuméricos. {m} exactamente m veces.
\Z fin del texto (…) 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

También podría gustarte