Sie sind auf Seite 1von 34

Introducción a Python

Angel C. II Calderón Paredes


@calderonp
Índice

 ¿Qué es Python?
 Corriendo e interpretando
 Tipos de datos
 Controles de flujo
 Encapsulando código
 Tres detalles
Algunas características

 Gratis y Libre
 Maduro(+23 años)
 Fácil de aprender
 Extremadamente portable
Propiedades del lenguaje

 Compila a bytecode interpretado


 La compilación es implícita y automática
 Tipado dinámico, pero fuerte
 Multi-paradigma
 Todos son objetos
 Pero puede usarse de manera procedural
 Módulos, clases, funciones, generadores
 Manejo moderno de errores
 Por excepciones
 Muy útil detalle de error
Más propiedades

 Viene con las baterías incluidas


 Extensa biblioteca estándar
 Clave en la productividad de Python
 Tipos de datos de alto nivel
 Enteros sin limites, strings, flotantes. Complejos
 Listas, diccionarios, tuplas
 Interprete interactivo
 Clave en el bajo conteo de bugs
 Acelera sorprendentemente el tipo de desarrollo
 Permite explorar, probar e incluso ver la doc.
Las baterías incluidas

 La Biblioteca Estándar ayuda con…

Servicios del sistema, fecha y hora, subprocesos, sockets,


internacionalización y localización, base de datos, threads, formatos zip,
bzip2, gzip, tar, expresiones regulares, XML (DOM y SAX), Unicode,
SGML, HTML, XHTML, XML-RPC (cliente y servidor), email, manejo
asincrónico de sockets, clientes HTTP, FTP, SMTP, NNTP, POP3, IMAP4,
servidores HTTP, SMTP, herramientas MIME, interfaz con el garbage
collector, serializador y deserializador de objetos, debugger, profiler,
random, curses, logging, compilador, decompilador, CSV, análisis
lexicográfico, interfaz gráfica incorporada, matemática real y compleja,
criptografía (MD5 y SHA), introspección, unit testing, doc testing, etc.,
etc...
Le ponemos más pilas

 Base de datos
 MySQL, PostgresSQL, MS SQL, Informix. DB/2. Sybase
 Interfaces gráficas
 Qt, GTK, win32, wxWidgets, Cairo
 Framework Web
 Django, Turbogears, Zope Plone, webpy, Flask (mi favorito)
 Y un montón más de temas
 PIL: para trabajar con imágenes.
 Pygame: Juegos, presentación, gráficos.
 Sympy: matemática simbólica.
 Numpy: cálculos de alta performance
Python Pucallpa

 ¿Quiénes somos?
 Todavía en proyecto
 ¿Cómo participar?
 Escribir un Whatsapp: 945294159
 ¿Que podemos hacer?
 Charlas programas.
 PyDays.
 PyCon.
 PyCamp
Corriendo e interpretando

 Menos charlas y más acción


 Python es interpretado
 No hace falta compilar
 Ciclo corto de pruebas
 Y encima tenemos el interprete interactivo
 Go!Go!Go!
 Acá es donde vamos a la realidad, 
 !Juro que antes andaba¡
 GO!
Tipos de datos
Haciendo Números

 Enteros  Floats
>>> 2 * 2 >>> 3 * 3.75 / 1.5
4 7.5
>>> (50-5*6)/4 >>> 7 / 2.5
5.0 3.0434782608695654
>>> 7/2
3.5
>>> 7 % 3
1
Más números

 Complejos, decimales, fracciones  Otras bases


>>> (3-4j)**2 >>> 0xf4
(-10.797386682316887-27.308377455385106j) 244
>>> Decimal(2).sqrt() >>> 0b1000b0b01
Decimal('1.414213562373095048801688724') 277
>>> Fraction(2, 3)**3 >>> hex(5566), bin(5566)
Fraction(8, 27) (‘0x15be’, ‘0b1010110111110’)
Cadenas

 Comillas, apóstrofos, triples  Algunas operaciones


>>> ‘Una cadena es una secuencia de caracteres’ >>> “Hola” + “ mundo”
‘Una cadena es una secuencia de caracteres’ ‘Hola mundo’
>>> “Ella dijo: ‘si’” >>> “Eco ” * 4
>>> “””Una línea “Eco Eco Eco Eco”
…y la otra””” >>> “ hola mundo ”.strip()
‘Hola mundo’
>>> len(‘Hola mundo’)
10
Accediendo a las cadenas

 Por posición  Rebanando


>>> saludo = ‘Hola mundo’ >>> saludo[2:5]
>>> saludo[0] ‘la ‘
‘H’ >>> saludo[2:8]
>>> saludo[3] ‘la mun’
‘a’ >>> saludos[:4]
>>> saludo[-2] ‘Hola’
‘d’ >>> saludo[-2:]
‘do’
Listas

 Corchetes, varios tipos de elementos  Concatenamos, reemplazamos


>>> a = ['harina', 100, 'huevos', 'manteca'] >>> a + ['oro', 9]
>>> a ['harina', 100, 'huevos', 'manteca', 'oro', 9]
['harina', 100, 'huevos', 'manteca']
>>> a[0] = "sal"
>>> a
 Accedemos como cualquier secuencia
['sal', 100, 'huevos', 'manteca']
>>> a[0]
'harina'
>>> a[-2:]
['huevos', 'manteca']
Y dale con las Listas

 Pueden tener incluso otras listas  Tenemos otros métodos


>>> a >>> a.index("huevos")
['sal', 100, 'huevos', 'manteca'] 1
>>> a[1] = ["Hola", 7] >>> a.sort()
>>> a >>> a
['sal', ['Hola', 7], 'huevos', 'manteca'] ['huevos', 'manteca', 'sal']

 Borramos elementos
>>> del a[1]
>>> a
['sal', 'huevos', 'manteca']
Tuplas (Conjuntos)

 Definimos con llaves, poniendo valores  Operamos


>>> nros = {1, 2, 1, 3, 1, 4, 1, 5} >>> nros - otros
>>> nros set([1, 2, 3])
set([1, 2, 3, 4, 5]) >>> nros & otros

>>> otros = {4, 5, 6, 7} set([4, 5])

>>> otros.update([6, 7, 8]) >>> nros | otros

>>> otros set([1, 2, 3, 4, 5, 6, 7, 8])

set([8, 4, 5, 6, 7])
Diccionarios

 Definimos con llaves, poniendo pares  Borrando


>>> días = {"enero": 31, "junio": 30, "julio": 30}
>>> del días["julio"]
>>> días
>>> días
{'enero': 31, 'julio': 30, 'junio': 30}
>>> días["enero"] {'agosto': 31, 'enero': 31, 'junio': 30}

31
>>> días["agosto"] = 31
>>> días["julio"] = 31
>>> días
{'agosto': 31, 'enero': 31, 'julio': 31, 'junio': 30}
>>> cualquiercosa = {34: [2, 3], (2, 3): {3: 4}}
Más diccionarios

 Viendo qué hay  Otros métodos


>>> "marzo" in días >>> días.get("agosto", "No tenemos ese mes")
False 31
>>> días.keys() >>> días.get("mayo", "No tenemos ese mes")

dict_keys(['enero', 'agosto', 'junio']) 'No tenemos ese mes'

>>> dias.values() >>> días.pop("agosto")

dict_values([31, 31, 30]) 31


>>> días
{'enero': 31, 'junio': 30}
Control de flujo
Si tal cosa o la otra

 Estructura del IF  Eso que hay después del if:


a = ...
or, and, not

if a == 0:
print("Ojo con el valor de b") < > == != <= >= in is

b=0
Todo evalua a Falso o Verdadero

elif a > 100 or a < 0:
print("Error en el valor de a")
b=0
else:
b=c/a
print(b)
Mientras tanto

 Estructura del WHILE  Al igual que el FOR, tiene:


>>> a = 0
continue: Vuelve a empezar al principio del loop
>>> while a < 1000:
break: Corta el loop y sale
... print(a ** 5)
... a += 3 else: Lo ejecuta si no cortamos con el break
0
243
7776
...
980159361278976
995009990004999
Excepciones

 Suceden cuando algo se escapa de lo  Podemos capturarlas


normal
>>> try:
>>> 14 / 2
... print(14 / 0)
7.0
... except ZeroDivisionError:
>>> 14 / 0
... print("error!")
Traceback (most recent call last):
...
File "<stdin>", line 1, in <module>
error!
ZeroDivisionError: division by zero
Manejando lo excepcional

 Es muy versátil  Y podemos generar excepciones


• TRY: Acá va el bloque de código que queremos >>> raise ValueError("Acá contamos que pasó")
supervisar
Traceback (most recent call last):
• EXCEPT: Atrapa todo, o sólo lo que se le
especifique File "<stdin>", line 1, in <module>
• ELSE: Si no hubo una excepción, se ejecuta ValueError: Acá contamos que pasó
esto
• FINALLY: Lo que esta acá se ejecuta siempre
• Se pueden combinar de cualquier manera
Encapsulando Código
Funciones

 Estructura básica  Las funciones son objetos


>>> def alcuadrado(n): >>> alcuadrado
... res = n ** 2 <function alcuadrado at 0xb7c30b54>
... return res >>> f = alcuadrado
... >>> f(5)
>>> alcuadrado(3)
9
Clases

 Armando una clase  Heredando


>>> class MiClase:
>>> class MiClase(ClasePadre):
... x=3
>>> class MiClase(ClasePadre, ClaseTio):
... def f(self):
... return 'Hola mundo'
...
>>> c = MiClase()
>>> c.x
3
>>> c.f()
'Hola mundo'
Otra clase sobre clases

 Armando una clase


>>>
>>> class Posicion:
>>> pos1 = Posicion(3, 4)
... def __init__(self, x, y): >>> pos1.x
... self.x = x 3
>>> pos1.distancia()
... self.y = y
5.0
... def distancia(self): >>> pos2 = Posicion(7, 9)
... dist = math.sqrt(self.x ** 2 + self.y ** 2) >>> pos2.y
9
... return dist
>>> pos1.y
...
4
El módulo más paquete

 Módulo  Paquetes
• Funciones, o clases, o lo que sea en un archivo
• Cuando tenemos muchos módulos juntos
• Es un .py normal, sólo que lo importamos y
usamos • Usamos directorios, e incluso subdirectorios
• Fácil, rápido, funciona

Tengo un pos.py, con la clase de la filmina


anterior:
>>> import pos
>>> p = pos.Posicion(2, 3)
>>> p.x
2
Todo lo bueno tiene su malo

 Ventajas  Desventajas
 Simplificado y rápido  La “curva de aprendizaje cuando ya estás en
la parte web no es tan sencilla”.
 Elegante y flexible
 La mayoría de los servidores no tienen
 Programación sana y productiva
soporte a Python, y si lo soportan, la
 Ordenado y limpio configuración es un poco difícil.
 Portable  Algunas librerías que trae por defecto no son
del gusto de amplio de la comunidad, y optan
 Baterías incluidas
a usar librerías de terceros.
 Comunidad
 Limitaciones de velocidad: sabemos que el
código Python se ejecuta línea por línea.
Pero Python se interpreta, da como resultado
una ejecución lenta.
… ahí no queda todo, vamos a ver código
en vivo

 Códigos de Ejemplo
 Crear uma web simple
 Crear un API Rest (Consulta DNI) y utilizarlo
desde otra Herramienta de Desarrollo
… y donde puedo aprender mas sobre
Python?
Inicio de Clases:
04 de Agosto
¿Preguntas?
¿Sugerencias?

¡Muchas gracias!

Das könnte Ihnen auch gefallen