Python ABC
Python ABC
Gerardo Garita 1
Desarrollo de
Aplicaciones con
Python 3.6
y PyCharm 2017 Community
Prof.Ing.Gerardo Garita 2
Prof.Ing.Gerardo Garita 3
Que es Python?
Conceptos basicos antes de iniciar el desarrollo
Prof.Ing.Gerardo Garita 4
Como nació Python?
• Fue creado a finales de los 80’s por Guido
van Rossum (Google, Dropbox) inspirado
en ABC.
• “Programacion para todos”:
• Python debería ser fácil, intuitivo y tan potente
como sus principales competidores.
• El proyecto sería de Código Abierto para que
cualquiera pudiera colaborar.
• El código escrito en Python sería tan
comprensible como cualquier texto en inglés.
• Python debería ser apto para las actividades
diarias permitiendo la construcción de
prototipos en poco tiempo.
Prof.Ing.Gerardo Garita 5
Que es Python?
• Python es un lenguaje de programación cuya filosofía
hace hincapié en una sintaxis que favorezca un código
legible.
• Python es al día de hoy uno de los lenguajes de
programación más populares.
• En 2011 se proclamó el tercer lenguaje más popular
de la forja GitHub y según la encuesta se encuentra
entre los 10 lenguajes de programación más
demandados en las ofertas de trabajo.
Prof.Ing.Gerardo Garita 6
Versiones de Python
• (1991) V0.9
• (1994) V1.0
• (1995) V1.2
• (2000) V1.6 (free)
• (2000) V2.0
• (2001) V2.2 – V2.3
• (2009) V3.x ó Python 3000
• (17 de julio del 2017) V3.2.6
Prof.Ing.Gerardo Garita 7
Características de Python
1. Es interpretado 6. Es administrado por la PSF (Python
Software Foundation).
2. Es multi paradigma
7. Influido por:
• OO (Java, C#) • ABC
• Funcional (Scala, F#) • C
• Imperativo* (C, Pascal) • Modula-3
• Perl
• Java
3. Es no-tipado dinámico
8. Ha influido a:
4. Es multiplataforma • D
• Groovy
• Ruby
5. Posee una licencia de código • JavaScript
abierto • Go
Prof.Ing.Gerardo Garita 8
Características de Python
9. Posee gran cantidad de
bibliotecas
Prof.Ing.Gerardo Garita 9
Filosofía Python
Prof.Ing.Gerardo Garita 10
Filosofía Python
• Bello es mejor que feo.
• Explícito es mejor que implícito.
• Simple es mejor que complejo.
• Complejo es mejor que complicado.
• Plano es mejor que anidado.
• Disperso es mejor que denso.
• La legibilidad cuenta.
• Los casos especiales no son tan especiales como para quebrantar las reglas.
• Lo práctico gana a lo puro.
• Los errores nunca deberían dejarse pasar silenciosamente. A menos que hayan sido silenciados
explícitamente.
• Frente a la ambigüedad, rechaza la tentación de adivinar.
• Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.
• Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo.
• Si la implementación es difícil de explicar, es una mala idea.
• Si la implementación es fácil de explicar, puede que sea una buena idea.
Prof.Ing.Gerardo Garita 11
Prof.Ing.Gerardo Garita 12
Como programar en Python?
Entorno de desarrollo
Prof.Ing.Gerardo Garita 13
PyCharm
• PyCharm es un entorno de desarrollo (IDE) dedicado a Python
and Django para el desarrollo del lenguaje y el desarrollo web.
Prof.Ing.Gerardo Garita 14
Entorno PyCharm 1. Menus and toolbars.
2. Barra de navegación.
3. Barra de estado.
4. Editor.
5. Ventanas de
herramientas.
Prof.Ing.Gerardo Garita 15
Prof.Ing.Gerardo Garita 16
Como programar en Python?
Sintaxis
Prof.Ing.Gerardo Garita 17
Prof.Ing.Gerardo Garita 18
Comentarios
‘’’
este es mi comentario
‘’’
# este es mi comentario
Prof.Ing.Gerardo Garita 19
Variables
• X=0
• X = “Hola mundo!”
Prof.Ing.Gerardo Garita 20
Tipo Clase Ejemplo
None >>None
Prof.Ing.Gerardo Garita 21
Tuplas
>>> tupla = ("abc", 42, 3.1415)
>>> tupla[0]
# Acceder a un elemento por su índice 'abc'
>>> tupla[0:2]
# Mostrar los elementos de la tupla del índice "0" al "2" (sin incluir este último)
('abc', 42)
Prof.Ing.Gerardo Garita 22
Tuplas anidadas
>>> tupla_anidada = (tupla, (True, 3.1415))
# También es posible anidar tuplas
>>> 1, 2, 3, "abc"
# Esto también es una tupla, aunque es recomendable ponerla entre paréntesis (recuerda que requiere, al menos, una
coma) (1, 2, 3, 'abc')
>>> (1)
# Aunque entre paréntesis, esto no es una tupla, ya que no posee al menos una coma, por lo que únicamente aparecerá
el valor 1
>>> (1,)
# En cambio, en este otro caso, sí es una tupla (1,)
>>> (1, 2)
# Con más de un elemento no es necesaria la coma final (1, 2)
Prof.Ing.Gerardo Garita 23
Listas
>>> lista = ["abc", 42, 3.1415]
>>> lista[0]
# Acceder a un elemento por su índice 'abc'
>>> lista[-1]
# Acceder a un elemento usando un índice negativo 3.1415
>>> lista.append(True)
# Añadir un elemento al final de la lista
>>> lista[0:2]
# Mostrar los elementos de la lista del índice "0" al "2" (sin incluir este último) ['xyz', 42]
Prof.Ing.Gerardo Garita 24
Listas anidadas
>>> lista_anidada[1][0]
# Acceder a un elemento de una lista dentro de otra lista (del
segundo elemento, mostrar el primer elemento)
True
Prof.Ing.Gerardo Garita 25
Listas por comprension
>>> range(5)
# La función "range" devuelve una lista, empezando en 0 y
terminando con el número indicado menos uno [0, 1, 2, 3, 4]
>>> lista [(0, 2), (1, 3), (2, 4), (3, 5), (4, 6)]
Prof.Ing.Gerardo Garita 26
Diccionarios
>>> diccionario = {"cadena": "abc", "numero": 42, "lista": [True, 42L]}
# Diccionario que tiene diferentes valores por cada clave, incluso una lista
>>> diccionario["cadena"]
# Usando una clave, se accede a su valor 'abc'
>>> diccionario["lista"][0]
# Acceder a un elemento de una lista dentro de un valor (del valor de la clave "lista", mostrar el primer
elemento)
True
Prof.Ing.Gerardo Garita 27
Diccionarios mixtos
>>> diccionario_mixto["diccionario"]["lista"][1]
# Acceder a un elemento dentro de una lista, que se encuentra dentro de un
diccionario 42L
Prof.Ing.Gerardo Garita 28
Conjuntos
>>> conjunto_inmutable = frozenset(["a", >>> conjunto1 & conjunto2
"b", "a"]) # Intersección set(['a', 'b'])
# Se utiliza una lista como objeto iterable
Prof.Ing.Gerardo Garita 30
Bucles
>>> numero = 0
>>> while numero < 10:
print numero,
numero += 1
0123456789
Prof.Ing.Gerardo Garita 32
Funciones - def
>>> suma(4)
# La variable "y" no se modifica, siendo su valor: 2 6
Prof.Ing.Gerardo Garita 33
Funciones - lambda
>>> suma(4)
# La variable "y" no se modifica, siendo su valor: 2 6
Prof.Ing.Gerardo Garita 34
Clases
>>> class Persona(object):
def __init__(self, nombre, edad):
self.nombre = nombre # Un atributo cualquiera
self.edad = edad # Otro atributo cualquiera
def mostrar_edad(self): # Es necesario que, al menos, tenga un parámetro,
generalmente: "self"
print self.edad # mostrando un atributo
def modificar_edad(self, edad): # Modificando Edad
if edad < 0 or edad > 150: # Se comprueba que la edad no sea menor de 0
(algo imposible), ni mayor de 150 (algo realmente difícil)
return False
else: # Si está en el rango 0-150, entonces se modifica la variable
self.edad = edad # Se modifica la edad
Prof.Ing.Gerardo Garita 35
Clases
>>> p = Persona("Alicia", 20)
# Instanciar la clase, como se puede ver, no se especifica el valor de "self"
>>> p.nombre
# La variable "nombre" del objeto sí es accesible desde fuera 'Alicia'
>>> p.mostrar_edad()
# Se llama a un método de la clase 20
>>> p.modificar_edad(21)
# Es posible cambiar la edad usando el método específico que hemos hecho para hacerlo de forma controlada
>>> p.mostrar_edad() 21
Prof.Ing.Gerardo Garita 36
Modulos
>>> import os
# Módulo que provee funciones del sistema operativo
>>> os.name
# Devuelve el nombre del sistema operativo 'posix'
>>> os.mkdir("/tmp/ejemplo")
# Crea un directorio en la ruta especificada
Prof.Ing.Gerardo Garita 37
Prof.Ing.Gerardo Garita 38
Porque Python?
Actualidad y Novedades
Prof.Ing.Gerardo Garita 39
Python? Porque?
• Los programas son mas claros y traducibles
• Aumenta la productividad (una vez que lo dominas)
• Es multi paradigma
• Es sostenible por su claridad
• Es versátil
• Es usado para el desarrollo de scripts
• Django es muy utilizado en el desarrollo web
• Es muy utilizado en el procesamiento de textos complejo
• Hay muchísimas librerías disponibles (estadísticas, matemáticas,
gráficos)
• Es el principal lenguaje usado para Machine Learning
• Es ideal para programadores novatos y la enseñanza
Prof.Ing.Gerardo Garita 40
Prof.Ing.Gerardo Garita 41
Let’s do it Python!
Actividad programada
Prof.Ing.Gerardo Garita 42
Prof.Ing.Gerardo Garita 43