curso python

78
 http://www.eqsoft.net [email protected] CURSO PYTHON NIVEL INICIAL Día 1:    1. Instalando Python (en Linux)    2. El entorno de consola    3. Variables y constantes Día 2:    4. Trabajo con tipos de datos    5. Trabajo con cadenas    6. Estructuras de control Día 3:    7. Manejos de errores    8. Funciones Día 4:    9. Objetos    10. Conexiones a base de datos, Objetos de Mysql y Pgsql Día 5:    11. Librería de sistema operativo y tiempo    12. Creando librerías y parámetros entre scripts

Upload: eq-soft-consultoria-y-soporte-eirl

Post on 13-Jun-2015

7.311 views

Category:

Education


0 download

DESCRIPTION

Diapositivas de un curso introductorio a programar en Python

TRANSCRIPT

Page 1: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

Día 1:   1. Instalando Python (en Linux)   2. El entorno de consola   3. Variables y constantesDía 2:   4. Trabajo con tipos de datos   5. Trabajo con cadenas   6. Estructuras de controlDía 3:   7. Manejos de errores   8. FuncionesDía 4:   9. Objetos   10. Conexiones a base de datos, Objetos de Mysql y PgsqlDía 5:   11. Librería de sistema operativo y tiempo   12. Creando librerías y parámetros entre scripts

Page 2: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

1. Instalando Python (en Linux)

Python en Linux es muy fácil de instalar, de echo es prácticamente la base de tantas herramientas de software libre que generalmente ya viene por defecto.

Porque los programadores prefieren usar Python?

a. Te obliga a programar mas limpio que lenguajes como PHPb. Su engine es mas ligero que el de PHP o Javac. Es multiplataformad. Soporte para programar scripts, gui apps y web appse. Altamente escalablef. Es SIMPLE

Page 3: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

1. Instalando Python (en Linux)

Plataformas RPM (redhat, centOS, Fedora)

yum install python

Plataformas DEB (Debian, Knoppix, Ubuntu en todas sus variantes)

apt­get  install python

OjO: van a encontrar varias ramas de Python como la 2.4, 2.5, 2.6, 2.8, 3.0; la rama 2.x es la mas usada y con mayor desarrollo por el momento, la 3.0 podría no tener todo lo que necesitas.

Page 4: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

1. Instalando Python (en Linux)

Instalar Python con los comandos anteriormente mencionados solo instala el “engine” base, python cuenta con una gran variedad de librerías para diferentes funciones y cada una de estas con sus propias dependencias, por ejemplo:

Si deseamos instalar las librerías de conexión a PostgreSQL debemos primero instalar python, luego instalar una de las librerías de conexión a Postgresql como esto :

apt­get install python­pgsql

Esto instalará primero el cliente de C de Postgresql y todas sus dependencias y luego al final la librería python­pgsql.

Page 5: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

1. Instalando Python (en Linux)

Luego de instalado al ejecutar “python” en la consola tenemos algo como esto :

Page 6: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

2. El entorno de la consola

El entorno de la consola nos permite “aprender” Python de una manera mas sencilla, se puede probar funcionalidades sencillas y sintaxis del lenguaje.

Comandos básicos:

print “hola mundo”    <­­ imprime algo en la consolaA = 22                          <­­ crea la variable “A”print A                         <­­ imprime el valor almacenado en la variable “A”b=input(“dame #:”)    <­­ solicita en la consola ingresar un valor y lo                                          guarda en la variable “b”

Se puede hacer mas?

Page 7: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

2. El entorno de la consola

(Los ... significan un “tab”)

  a=3  if  a < 3:  ...print “es menor que 3”  else:  ...print “es mayor o igual que 3”

presionar 2 veces “enter” en la ultima linea y la consola soltara este mensaje:

es mayor o igual que 3

Escribir sentencias complejas en la consola es complicado, un error de sintaxis hace volver a escribir toda la sentencia, esto es muy incómodo.

Page 8: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

2. El entorno de la consola

Para programar en Python es mejor utilizar un editor de texto cualquiera o alguno especializado en este lenguaje, grabar el programa como un archivo de extensión “.py” (no obligatorio) y luego ejecutarlos así:

python holamundo.py

El resultado lo veremos en la consola del sistema operativo.

Page 9: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

3. Variables y constantes

Python maneja varios tipos de datos, el tipo corresponde al tipo de dato con el cual se inicializa la variable.

Tipos soportados:

Cadenas (strings)EnterosPunto FlotanteBoolean

Comparar los resultados:

A=10                               A=10.0print A/3                         print A/3

Page 10: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

3. Variables y constantes

Existe un tipo “null” que en Python se conoce como “none”.

G=Noneif G is None:..print “G es nulo”else:...print “G tiene algo:

La respuesta es :G es Nulo

Los tipos boolean se asignan así:

a=True                 <­­­­tome en cuenta la primera letra en mayúsculab=False

Page 11: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

3. Variables y constantes

Arreglos.En Python el concepto de Arreglo es mucho mas especializado.

* La “lista”, es un conjunto de datos ingresados en una estructura única, no necesitan ser del mismo tipo (el índice empieza en 0):

A=[1,4,6,'apesol']for valor in A:...print valor

El resultado es :Elemento 0: 1Elemento 1: 4Elemento 2: 6Elemento 3: apesol

Practica : escribir “print A[­3]”

Page 12: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

3. Variables y constantes

Arreglos.

* La “lista”, incorpora el método “insert” para añadir mas elementos, el método “append” añade un valor adicional inmediatamente al final de la lista y el comando “del” elimina elementos de la lista de una posición determinada.

A.insert(4,'chicha')

del A[2]

Page 13: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

3. Variables y constantes

Arreglos.

* Las “tuplas”, son conjuntos de datos como en una lista pero es inmutable, no se puede añadir o borrar elementos.

A='a',2,'c',4for valor in A:...print valor

Los elementos entre paréntesis denotan una tupla dentro de otra, este principio se cumple en la “lista”.

A='a',2,'c',4,('e',6)for valor in A:...print valor

Page 14: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

3. Variables y constantes

Arreglos.

* Los “diccionarios” son como los arreglos tradicionales, tienen un índice y un valor como parte de su estructura, se puede añadir y quitar datos.

Arreglo={'a':123,'b':'hola mundo',3:122}print Arreglo['b']

ahora veamos que obtenemos con esto:for c in Arreglo:...print c

Y ahora así:for c in Arreglo:...print Arreglo[c]

Page 15: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

3. Variables y constantes

Arreglos.

­ La función “len()” permite obtener la cantidad de elementos dentro de una lista, tupla o diccionario.­ El comando “del” permite eliminar un elemento en el diccionario haciendo mención al mismo y su índice.­ Para insertar un elemento en un arreglo simplemente haga mención del mismo y coloque un nuevo nombre de índice (numero o texto)­ Podemos crear listas de diccionarios:

a=({1:12,2:13},{1:21,2:23})for c in a:...print c...for d in c:......print c[d]

Page 16: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

4. Trabajo con Tipos de Datos

* Type, permite ver el tipo de datos de una variable

x=10                 x=122332423423434     x='abc'type(x)             type(x)                           type(x)

x=10.0              x=None                         x=(1,2,3)              x={1:10,2:20,3:30}type(x)             type(x)                          type(x)                 type(x)

* Int y float, convierte un float a un entero y de entero a float, puede usarse con cadenas de texto pero que no tengan literalesx=10.0                                     x=10print x/3                                 print x/3print int(x)/3                          print float(x)/3

* Operadores  +=, ­=, *=,  /= para suma, resta, multiplicación y división rápida con el valor ya almacenado

Page 17: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

4. Trabajo con Tipos de Datos

* %, el modulo en las divisiones enteras* //, para la división entera

print 9 % 2  print 9 // 2

* str, transforma cualquier objeto/variable a cadena de caracteres

x=12print str(x)+'<­­el numero'

* bool, permite transformar una variable a booleano, no muy práctico.

X=12                      x=0                             x='abc'                 x=''           x=Noneprint bool(x)         print bool(x)              print bool(x)        print(x)     print(x)

Page 18: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

5. Trabajo con Cadenas

El manejo de cadenas en Python es bastante avanzado y no requiere funciones externas.

Concatenar:   

a='hola'                                  a='aaa'b='mundo'                             a+='bbb'print a+' '+b                          print a

Subcadena (el indice siempre empieza en 0):

a='hola mundo'      print a[3]            <­­ un dígitoprint a[5:10]       <­ una sección de cadena, como “substr”print a[5:]           <­ desde la posición 5 hasta el final de la cadena

Page 19: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

5. Trabajo con Cadenas

Subcadena (el indice siempre empieza en 0):

a='hola mundo'      print a[:5]             <­­ corta desde el inicio hasta la posición 5print a[:­5]            <­­ corta los últimos 5 caracteres de la cadenaprint a[2:­5]          <­­ corta desde la posición 2 hasta los 5 últimos                                   caracteres de una cadena

Una manera de armar cadenas formateadas es así:X=12Y=11A=”el  valor de X es: %d y de Y es:%d” % (X,Y)print A

Len, retorna la cantidad de caracteres de una cadena

Page 20: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

5. Trabajo con Cadenas

Una cadena es un objeto que tiene varios métodos asociados a ella misma tales como :

x = 'Hola, MunDO'x.title()                             <­­­ primera letra de cada palabra en mayúsculax.upper()                         <­­­ toda la cadena en mayúsculax.lower()                          <­­­ toda la cadena en minúsculasx.capitalize()                   <­­­ primera letra de la cadena en mayúsculax.count('a')                      <­­­ cuenta la cantidad de 'a' en la cadenax.find('a,')                        <­­­ ubica la posición de la cadena del texto                                               ingresadox.replace('a','4')               <­­­ reemplaza las 'a' por '4'x.split(x)                          <­­­ corta la cadena en una lista, cada palabra                                                es un elemento de la lista

Page 21: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

5. Trabajo con Cadenas

Caracteres especiales como comillas y dobles comillas deben usar el caracter “\” por delante.

a=”y San Martin dijo \”Viva el Peru\””print a

Para repetir cadenas, multipliquela por la cantidad de veces requerida

A='cuy'*5print A

No se puede cambiar el valor de un caracter de una cadena

A=”cuy”A[2]='i'     <­­­ da un error

Page 22: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

6. Estructuras de Control

Operadores de comparacion:

==   <­­­ igual<>   <­­­ diferente

Operadores logicos:

andornot

A=1B=1if not a <> b:...print “A no es diferente de B”

Page 23: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

6. Estructuras de Control

IF

if a == b:...print “a y b son iguales”elif a > b:...print “a es mayor que b”else...print “a y b son diferentes”

Page 24: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

6. Estructuras de Control

WHILE

X=10Y=0while Y < X:...Y += 1...print Y

Page 25: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

6. Estructuras de Control

FOR, tiene muchas formas de usarse

En un rango de números :for a in range(1,10):       <­­­ejecuta del 1 al 9...print a

for a in range(10):        <­­­ejecuta del 0 al 9...print a

En una lista de valores:for a in (1,10,5,7):        <­­­­ puede ser una tupla o un diccionario..print a

Page 26: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

6. Estructuras de Control

FOR, tiene muchas formas de usarse

En un rango de números :for a in range(1,10,2):       <­­­ejecuta del 1 al 9 saltando de 2 en 2...print a

for a in range(10,1,­3):        <­­­ejecuta del 10 al 1 saltando de 3 en 3...print a

for a,b in ((1,4),(2,5),(3,6)):    <­­­ solo se acepta valores numéricos enteros...print a...print b

Page 27: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

6. Estructuras de Control

Break, permite salir de un loop

for c in range(1,10):        <­­­ ejecuta del 1 al 6...print c...if c > 5:......break

Continue, permite volver a iterar sin ejecutar el código que continua en el loop

for c in range(1,10):        <­­­ ejecuta del 1 al 5...if c > 5:......continue...print c

Page 28: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

7. Manejo de errores

El comando “try” permite capturar la posibilidad de que se procese un error en la ejecución del siguiente comando para que el Python no nos bote del programa.

try:...a='abc'+123except:...print “hay un error”

El “except” responde a diferentes valores dependiendo el comando a ejecutar, por ejemplo las librerías de PostgreSQL tienen diferentes “except” dependiendo el tipo de error.

Page 29: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

7. Manejo de errores

try:...a='abc'+123except:...pass                                          <­­­ “pass” no hace nadaprint “se comio el error”

Esta sentencia da error el código debe continuar debajo del nivel del “try”

try:...a='abc'+123...print “aqui debe continuar el programa”except:...pass                                          

Page 30: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

7. Manejo de errores

try:...a='abc'+123except:...pass                                          <­­­ “pass” no hace nadaprint “se comio el error”

Esta sentencia da error el código debe continuar debajo del nivel del “try” en el editor de consola, ejecutando un archivo “.py” no sucede error y se continua con la ejecución del programa.

try:...a='abc'+123...print “aqui debe continuar el programa si estoy en consola”except:...pass                                          

Page 31: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

7. Manejo de errores

try:...a='abc'+123except:...raise  ('mensajito')    <­­­ permite ver todo el traceback del error                                            corta el programa y permite enviar un mensaje                                            final personalizado

Existen varios tipos de “except” para el uso común del lenguaje estos son los mas conocidos:

except RuntimeError:print “error en el sistema”

except TypeError:print “error de tipo de datos, como el que estamos generando”

except NameError:print “cuando se usa un nombre de variable/objeto que no existe”

Page 32: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

7. Manejo de errores

Ejemplo para explicar:

import sys                                                                <­­ importa una libreríatry:    f = open('myfile.txt')    s = f.readline()    i = int(s.strip())except IOError as err:                                             <­­ tipo de except especial de la    print("I/O error: {0}".format(err))                             libreria sys si no Open(myfile.txt”) except ValueError:                                                  <­­ se ejecuta cuando int() no puede         print("Could not convert data to an integer.")      convertir el valor a enteroexcept:                                                                     <­­ error generico    print("Unexpected error:", sys.exc_info()[0])    raise

Page 33: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

def mi_funcion (mi_parametro):...sentencias

Ejemplo:

def mi_raizcuadrada( pNumero):...return (pNumero * pNumero)

print mi_raizcuadrada(4)print mi_raizcuadrada(mi_raizcuadrada(4))

Page 34: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

Para asignar valores por defecto a los parametros:

def mi_raizcuadrada( pNumero=9):...return (pNumero * pNumero)

print mi_raizcuadrada(4)print mi_raizcuadrada()

Page 35: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

def mi_funcion (mi_parametro):...sentencias

Ejemplo:

def mi_raizcuadrada( pNumero):...return (pNumero * pNumero)

print mi_raizcuadrada(4)print mi_raizcuadrada(mi_raizcuadrada(4))

Page 36: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

Es posible invocar solo ciertos parámetros de una función

def mifuncion (a=1, b=2):...return a+b

print mifuncion(2,3)print mifuncion()print mifuncion(b=3)

Pero si los valores no invocados explícitamente no tiene valor por defecto el Python devolverá un error.

Page 37: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

Es posible pasar mas parámetros de los esperados que se reciben en una lista o en un diccionario

def mifuncion( parametro, *arguments, **keywords):print parametrofor parametrosadicionales in arguments:

print “valor:”+parametrosadicionalesfor indice in keywords:

print “indice:”+indiceprint “valor:”+keywords[indice]

return

mifuncion('a','b','c','d', uno='uno', dos=2, tres='tres')

OjO no se puede usar de indice un número

Page 38: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

Las funciones pueden tener funciones anidadas

def anidado1(argumento1):...def anidado2(argumento2):......return argumento1 +argumento2...return anidado2...f = anidado1(5)  <­­­ en este momento no opera nada, solo genera una f(3)                             función en memoriaf(4)

d = anidado2(6)      <­­ esto da errorprint anidado1(5)   <­­ esto da un mensaje de sistema

Page 39: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

Los parámetros en la función solo están activos dentro de la misma función, lo declarado fuera de la función puede ser invocado como “global” y modificado si fuera necesario.

A=6def valor():..global A..print “el valor es : “ + str(A)..A += 10..return

valor()print “el valor es:” + str(A)

Page 40: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

Las funciones pueden simular retornar varios valores

def mifuncion(a,b):return a * 2, b  * 3

c ,d = mifuncion(4,5)print cprint d

Page 41: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

8. Funciones (Usar editor de texto)

Los parámetros vistos hasta el momento son por “referencia”, solo algunos tipos de datos pueden ser pasados por “valor”, por ejemplo el integer o el float son inmutables, pero las listas no.

def mifuncion( inmutable,mutable):inmutable = inmutable + 1mutable.append(inmutable)

a=15b=[15]mifuncion(a,b)print aprint b

Page 42: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

En su forma mas básica podemos declarar clases en Python de esta forma:

class MiClase:...atributo1=123...atributo2='abc'

...def metodo1(self):

......print “atributo : “ + str(self.atributo1) + “ “ + self.atributo2

obj=MiClase()obj.metodo1()

“self” es una palabra reservada y es un equivalente a “this” en otros lenguajes.

Page 43: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

En su forma mas básica podemos declarar clases en Python de esta forma:

class MiClase:...atributo1=123...atributo2='abc'

...def metodo2(self, valor):

......print atributo1+valor

obj=MiClase()obj.metodo2(4)

Page 44: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Constructor de clases usar “__init__”

class MiClase2:...atributo1 = 12...atributo3 = [1,'b',3]...def __init__(self, parametro1, parametro2):  <­­”self” se debe declarar en......if parametro1 <> None:                                     todos los métodos.........self.atributo1 = parametro1......self.atributo2 = parametro2

obj=MiClase2(None,2)print obj.atributo1print obj.atributo2print obj.atributo3obj2=MiClase2(44,2)print obj2.atributo1

Page 45: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Para algunos casos especiales podemos desear convertir un objeto entero a una cadena de caracteres, esto se hacer con “__str__”

class MiClase:...def __str__(self)......return “me converti en cadena”

obj=MiClase()print obj

También es posible implementar el método “__repr__” para obtener un efecto similar pero con un texto formateado.

Page 46: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Los objetos en Python permiten crear mas atributos de los definidos en la clase, de manera indiscriminada lastimosamente:

obj=MiClase()obj.atributoquenoexiste = 1print obj.atributoquenoexiste

Sin embargo podemos setear que esto no suceda con el método “__setattr__”

class miClase:...atributo1 = 123...def __setattr__(self,nombre, valor):......print “no me puedes cambiar, el parametro anadido es:” + nombre + “ y el valor es:” + repr(valor)

obj=miClase()obj.atributoquenoexiste = 1

Page 47: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Para el caso de que deseemos advertir sobre el hacer “get” a un atributo que no existe usamos el método “__getattr__”

class miClase5:...atributo1 = 123...def __getattr__(self,name):......print "lo siento, no existe atributo: " + name

obj = miClase5()print “valor:” + obj.atributo12

Page 48: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Para borrar atributos añadidos al objetos usar “del”:

class miClase5:...atributo1 = 123...def __getattr__(self,name):......print "lo siento no existe tributo : " + name

obj = miClase5()obj.atributo12=1234print "voy a borrar el atributo con el valor:" + str(obj.atributo12)del obj.atributo12x = obj.atributo12

Page 49: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Para evitar que se borren atributos añadidos al objeto

class miClase5:...atributo1 = 123..def __delattr__(self,name):......print "no se puede borrar a tributo: "+ name

obj = miClase5()obj.atributo12=1print "voy a borrar:" + str(obj.atributo12)del obj.atributo12print “sigo aqui: “ + str(obj.atributo12)

Page 50: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Para declarar “set” y “get” a los atributos se debe operar como en este ejemplo.

class miClase6(object):...def __init__(self):                      ......self.__valor = 12                                <­­­ aquí acabo de declarar un atributo...def getValor(self):                                       privado al usar “__” delante del nombre......print "Leyendo numero del get".....return self.__valor...def setValor(self, valor):......print "Grabando el valor en el set"......self.__valor = valor...valor = property(getValor,setValor)

obj = miClase6()print obj.valorobj.valor=8print obj.valorprint obj__valor    <­­­ va a dar un error

Page 51: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

9. Objetos

Herencia, para declararla hay que decir que la clase implementa otra clase.

class Uno:...numero1 = 1...def imprime1(self):......print "estoy en la clase 1"

class Dos(Uno):...numero2 = 2...def imprime2(self):......print "estoy en la clase 2"......Uno.imprime1(self)...def imprime3(self):......print "estoy en la clase 2, no invoco nada de la clase 1"

a = Dos()a.imprime2()a.imprime1()a.imprime3()print a.numero1print a.numero2

Page 52: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

Para conectarse a las bases de datos Python utiliza diversas librerías especializadas para ello, es común que incluso para una misma base de datos exista mas de una alternativa de librería como en el caso de MySQL.

Usaremos en estas distribuciones desde repositorios:

centOS: MySQL­pythonUbuntu: python­mysqldbhttp://www.mikusa.com/python­mysql­docs/

centOS: postgresql­pythonUbuntu: python­pgsqlhttp://www.pygresql.org/pg.html

En ambos casos son las mismas pero se llaman diferente los paquetes dependiendo la distribución de Linux que se use

Page 53: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbtry:

dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')except MySQLdb.Error:

print “La clase MySQLdb encontro un error”except:

print “no me pude conectar a la db, error desconocido”

MySQLdb incluye su propio “except”.

Page 54: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbtry:

dbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')except MySQLdb.Error, error:

print “error exacto:”print error

except:print “no me pude conectar a la db, error desconocido”

en este caso “error” es una lista de 2 elementos con el error exacto, el número y el mensaje

Page 55: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbdbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')

qry=”select * from agentes”

cursor=dbMY.cursor()       <­­­ antes de ejecutar un query es necesario declarar un cursorcursor.execute(qry)print cursor                        <­­­ esto solo nos devuelve la dirección de memoria del cursos

setdata = cursor.fetchall() <­­­ bajamos la data del cursor a un contenedor de los datos,                                                    es una lista de listasprint setdata

Page 56: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbdbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')qry=”select * from agentes”cursor=dbMY.cursor()       cursor.execute(qry)setdata = cursor.fetchall() 

for registro in setdata:                                                       <­­­ así podemos obtener la datafor campo in registro:

print campoprint “***************fin registro***************”

Page 57: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbdbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')qry=”select * from agentesXXXYYY”cursor=dbMY.cursor()       try:

cursor.execute(qry)except MySQLdb.Error, error:

print “error exacto:”print error

except:print “error desconocido en el query”

setdata = cursor.fetchall()                                               <­­­ si se da un error esto dará otro for registro in setdata:                                                           error

for campo in registro:print campo

print “***************fin registro***************”

Page 58: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbdbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')qry=”select * from agentesXXXYYY”cursor=dbMY.cursor()       try:

cursor.execute(qry)setdata = cursor.fetchall() otro                                         <­­­ ponerlo aquí es una manerafor registro in setdata:                                                             de resolver el problema

for campo in registro:print campo

print “***************fin registro***************”except MySQLdb.Error, error:

print “error exacto:”print error

except:print “error desconocido en el query”

Page 59: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbdbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')

qry=”select * from agentes”cursor=dbMY.cursor()       

rows=cursor.execute(qry)                           <­­­ esto devuelve la cantidad de registrosprint “existen %d registros” % rows

Page 60: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbdbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')

qry=”select * from agentes”cursor=dbMY.cursor()       rows=cursor.execute(qry)                           

for a in range(1,rows):c = cursor.fetchone()                                                   <­­­ así podemos pedir los registrosprint c                                                                                  uno por unoprint “Fin registro %d ************************” % a

Page 61: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

MySQL

import MySQLdbdbMY = MySQLdb.connect(host='localhost',user='root',passwd='clave',db='operador')

qry=”select * from agentes”cursor=dbMY.cursor()       rows=cursor.execute(qry)                           

cursor.close()           <­­­ cerramos el cursor, liberamos memoria

dbMY.close()            <­­­­ cerramos la conexión a la db, nunca dejar de hacerlo.

Page 62: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

PostgreSQL

import pg

try:    dbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')except TypeError, error:    print "argumentos mal pasado, o demasiado"    print errorexcept SyntaxError, error:    print "argumento duplicado"

print errorexcept pg.InternalError, error:    print "se conecto al motor pero este responde negativo a la conexion"    print error

En el caso de la librería de PostgreSQL la mayoría de los métodos del objeto incluyen sus propias excepciones, por ello se hace necesario consultar la documentación, el parámetro “error” esta recibiendo el mensaje especifico del error.

Page 63: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

PostgreSQL

import pgdbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')

qry = "insert into tabla values (1,2,3)"try:

resultado = dbPG.query(qry)except TypeError,error:

print "Query mal formado"print error

except pg.ProgrammingError,error:print “Error producido por la data en si y no de formacion de query”print error

Existe ademas:­ ValueError: empty SQL query or lost connection­ pg.InternalError: error during query processing

Page 64: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

PostgreSQL

import pgdbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')

qry = "select * from tabla"resultado = dbPG.query(qry)

setdata = resultado.getresult()          <­­­ esto retorna la data como una tuplaprint setdata

print “**************************”

setdata2 = resultado.dictresult()      <­­­ esto retorna la data como un diccionarioprint setdata

Page 65: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

PostgreSQL

import pgdbPG = pg.connect(dbname='oeprador',user='usuario',passwd='clave',host='localhost')

qry = "select * from tabla"resultado = dbPG.query(qry)

setdata = resultado.dictresult()      

for c in setdata:for d in c:

print d + ":" + str(c[d])print "**********fin registro"

Page 66: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

10. conexiones a Base de datos

PostgreSQL

Algunas cosas interesantes.

qry = "select * from tabla"resultado = dbPG.query(qry)print resultado.listfileds()     <­­­ devuelve los nombres de los campos de la consulta

print resultado.ntuples()       <­­­ cantidad de registros que devolvió la consulta

dbPG.close()                          <­­­ nunca olvidar cerrar la conexión

Page 67: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

11. Librería de sistema operativo y tiempo

La librería de sistema operativo nos permite interactuar entre el Python y el OS directamente.

Podemos mandar comandos de consola completos al OS.

import osos.system('ls')

La salida del comando la podemos ver en la consola al ejecutar el script pero no podemos capturarla.

Page 68: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

11. Librería de sistema operativo y tiempo

os.getcwd()      <­­­ retorna en que directorio estoy

os.chdir('/var/log')  <­­­ se mueve a otro directorio

Desde la consola Python podemos utilizar 2 comandos muy importantes para ver las funciones que nos ofrece la librería:

>>> dir(os)      <­­­­­ muestra los métodos de la librería

>>>help(os)   <­­­­­ es una ayuda en linea de la librería

Page 69: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

11. Librería de sistema operativo y tiempo

La librería de tiempo nos permite trabajar con fechas y horas, para usarla:

import time

print time.asctime()         <­­ devuelve una cadena con la fecha y hora.

print time.ctime()             <­­ sin parámetro devuelve la fecha actual en cadena.

print time.ctime(12345)   <­­ especificando una cantidad de segundos devuelve la                                               fecha transcurrida desde el “tiempo local” del 31dic de                                              1969.

print time.localtime()       <­­ devuelve la fecha y hora actual en formato numérico                                                 en una lista. 

print time.sleep(60)        <­­ suspende la ejecución de un código durante el número                                               de segundos especificado.

Page 70: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

11. Librería de sistema operativo y tiempo

La librería de tiempo nos permite trabajar con fechas y horas, para usarla:

import time

x =  time.strptime('2009­08­09','%Y­%m­%M')  <­­­ transforma una cadena a fecha (enprint x                                                                         una lista).

x =  time.strftime('%Y­%m­%M',x)                    <­­­ transforma una fecha a cadena enprint x                                                                         el formato especificado.

Page 71: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

11. Librería de sistema operativo y tiempo

La librería de tiempo nos permite trabajar con fechas y horas, para usarla:

import time

segundosX = 0

#obtienel a hora actual en segundossegundos = int(time.time())print "hora actual:" + time.ctime(segundos)

segundosX = segundos + 60suma=time.ctime(segundosX)print "mas 1 minuto:" + suma

segundosX = segundos +  3600suma=time.ctime(segundosX)print "mas 1 hora:" + suma

Page 72: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

11. Librería de sistema operativo y tiempo

Existe una librería alterna que es la datetime, esta nos ayuda en operaciones con fechas.

from datetime import date

fecha1=date.today()        <­­­ devuelve el día actual

fecha2=date(2009,12,4)   <­­­ transforma un YYYY,MM,DD en enteros a fecha

x= fecha2 – fecha1         <­­­ la operación entre fechas devuelve un tipo de datoprint x                                    “timedelta”, OjO no podemos sumar fecha.print x.daysprint x.secondsprint x.microseconds

Solo los 3 tipos de resultados son almacenados, para convertir a hora o minutos hay que operar con los “days” o los “seconds”

Page 73: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

11. Librería de sistema operativo y tiempo

Para restar o sumar días:

from datetime import datefrom datetime import datetime

hoy = date.today()

nuevafecha = hoy + timedelta(365)       <­­­ especificamos los diasprint nuevafecha

nuevafecha = hoy ­ timedelta(365)       print nuevafecha

Page 74: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

12. Creando librerías y parámetros entre scripts

Creando tu propia librería

Crear un archivo de texto con la extensión “.py”

touch mate.py

Escribir en este archivo las funciones que se desean programar

def suma(a,b):return a+b

En el archivo con el código que se desea importar colocar

import mate                  <­­­ debe tener el mismo nombre del archivo físico

print mate.suma(8,4)   <­­­ especificar el nombre de la librería delante de la                                                    función

Page 75: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

12. Creando librerías y parámetros entre scripts

Creando tu propia librería

La librería puede tener incluidas clases (editar mate.py y añadir) 

class clsMate:X = 0Y = 0def divide(self)

return X/Y

En el archivo con el código que se desea importar colocar

obj = mate.clsMate()obj.X = 10obj.Y = 5print obj.divide()

Page 76: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

12. Creando librerías y parámetros entre scripts

Creando tu propia librería

Se pueden importar solo ciertas funciones o clases de la librería

from mate import suma,clsMate

print suma(5,7)     <­­­ en este caso ya no es necesario hacer precisión de la obj = clsMate()            libreríaobj.X=10obj.Y=5print obj.divie()

print mate.multiplica(6,9)  <­­­ esto da error porque no se importoprint multiplica(6,9)           <­­­ esto da error porque no se importo

Page 77: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

12. Creando librerías y parámetros entre scripts

Pasando parámetros entre scripts

Para pasar parámetros a un script “.py” es necesario hacer uso de la librería “sys” de la siguiente manera *crear un archivo llamado (parametro.py):

import sys

if (len(sys.argv) > 1 ):    print sys.argv    for c in sys.argv:        print c

En la consola escribir:

python parametro.py parametro1 2,tres 'cuatro 4'

Page 78: Curso python

   

http://www.eqsoft.net [email protected]

CURSO PYTHONNIVEL INICIAL

12. Creando librerías y parámetros entre scripts

Ejecutando directamente un script en Python

Para poder lograr que Linux reconozca directamente que debe usar el interprete de Python en nuestros scripts es necesario añadir los siguiente en sus scripts:

#!/usr/bin/pythonprint “hola mundo”

El archivo “.py” debe tener derechos de ejecución:

chmod 777 archivo.py

para ejecutarlo en el mismo directorio:

./archivo.py