Tipos y operadores básicos
Tipos y operadores básicos
Operador Descripción Ejemplo
+ Suma r = 3 + 2 # r es 5
- Resta r = 4 - 7 # r es -3
- Negación r = -7 # r es -7
* Multiplicación r = 2 * 6 # r es 12
** Exponente r = 2 ** 6 # r es 64
/ División r = 3.5 / 2 # r es 1.75
// División Entera r = 3.5 // 2 # r es 1.0
% Módulo r = 7 % 2 # r es 1
Muchas de las operaciones y funciones que operan sobre las cadenas también funcionan en las listas.
La función len devuelve la longitud de una lista, el operador + las concatena, el operador * las multiplica un número de veces, se puede hacer referencia a un elemento de la lista por su índice, el operador de corte obtiene un un fragmento de la lista:
>>> [1, 2, 3, 4,5, 6]
[1, 2, 3, 4, 5, 6]
>>> [’hola’, ’mundo’]
[’hola’, ’mundo’]
>>> a = [1, 6, 3, -5, 10.6]
>>> len(a)
5
>>> b = [’lista’, [’otra’, ’lista’]]
>>> a + b
[1, 6, 3, -5, 10.6, ’lista’, [’otra’, ’lista’]]
>>> 4*a
[1, 6, 3, -5, 10.6, 1, 6, 3, -5, 10.6, 1, 6, 3, -5, 10.6, 1, 6, 3, -5, 10.6]
>>> a[2]
3
>>> a[1:3]
[6, 3]
>>> xs=[78455, 89211, 66540, 45750]
>>> len(xs) #Devuelve la longitud de la lista
>>> xs[1]=79211 #Modifica el valor del indice 1
>>> xs.insert(2, 54988) #Inserta un elemento en un índice definido
>>> xs.append(47890) #Agrega un elemento al final de la lista
>>> xs.remove(78455) #Elimina el elemento 78455
>>> xs.index(78455) #Devuelve el índice de un valor
>>> xs.pop(0) #Extrae un valor de acuerdo a un índice
Colecciones (Tuplas)
Una tupla es una l ista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.
Una tupla se define del mismo modo que una lista, salvo que el conjunto se encierra entre paréntesis en lugar de entre corchetes.
Los elementos de una tupla tienen un orden definido, como los de una lista. Las tuplas tienen primer índice 0, como las listas, de modo que el primer elemento de una tupla no vacía es siempre t[0].
Los índices negativos cuentan desde el final de la tupla, como en las listas.
Las porciones funcionan como en las listas.
Comprensiones de listas
>>> S = [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Estructuras de control (if)
a = float(raw_input('Ingrese un número: '))
if a != 0:
print 'El número no es cero.'
else:
print "El número es cero."
if a == 0:
print 'El número es cero.'
elif a > 0:
print 'El número es mayor a cero.'
else:
print "El número es menor a cero."
print "El número no es cero." if a != 0 else "El número es cero."
public class Empleado {
private String nombres;
private Double sueldo;
private String puesto_laboral;
public Empleado(String nombres) {
this(nombres, 850);
}
public Empleado(String nombres, Double sueldo) {
this(empleado, sueldo, "Operador");
}
public Empleado(String nombres, Double sueldo, String puesto_laboral) {
this.nombres = nombres;
this.sueldo = sueldo;
this.puesto_laboral = puesto_laboral;
}
}
Class Empleado(object):
def __init__(self,
nombres,
sueldo=850,
puesto_laboral="Operador")
self.nombres = nombres
self.sueldo = sueldo
self.puesto_laboral = puesto_laboral
Valores por omisión para los parámetros de los métodos
No se declaran los tipos de datos
Lambdas
>>> g = lambda x: x*2
>>> g(3)
6
Django
¿Qué es Django?
1. Un framework web escrito en Python (2.7+ y 3.3+)
2. Emplea el patrón MVC (Modelo-Vista-Controlador)
3. En Django el patrón MTV recibe el nombre MTV (Model-View-Template)
4. Las “vistas” de Django son los controladores en el MVC clásico
5. Las plantillas o “templates” con las “vistas” en el MVC clásico
6. Incluye sus propios compomentes:
Ruteador, despachador, controladores, ORM y lenguaje de plantillas
¿Por Qué es Django?
Bajo acoplamiento: Paradigma MVC
Mínima cantidad de código
Desarrollo ágil
Don’t Repeat Yourself (DRY)
Explícito frente a implícito
Consistencia
Orígenes
Nace de un periódico en Kansas, USA
Producto de la búsqueda de agilidad en el desarrollo web
Programación con plazos para periodistas (yo vivo un poco eso!)
Autores originales: Adrian Holovaty (periodista) y Jakob Kaplan-Moss
El nombre viene de Django Reinhardt, guitarrista gitano de jazz (belga)
Adrian Holovaty es un guitarrista aficionado al jazz
La mascota es un pony :)
Arquitectura
Esquema interno
Documentación!
Servidor HTTP de pruebas
ORM
URL dispatcher
Templates
Admin
Forms
Middleware y Signals
Internacionalizacion
Cache
Autenticación
Muchas aplicaciones “enchufables” disponibles
Modelo-Vista-Controlador
Modelo-Vista-Controlador
Django
Las rutas con objetos URLConf (urls.py) Relacionan expresiones regulares con vistas (funciones)
Se puede delegar una coincidencia a otro grupo de URLconfs
El despachador invoca a las vistas y ejecuta middlewares Se crea un objeto “request” que es pasado a la función (vista)
Este objeto request puede haber sido alterado por uno o más middlewares
Cuando la vista devuelve una respuesta también puede actuar el middleware
Django
Las vistas son funciones o métodos de clases, aunque es más raro: Reciben un objeto “request” que representa a la petición HTTP
Devuelve un objeto “response” que representa a la respuesta HTTP
Las redirecciones, mensajes de error: 403, 404, 500 son subclases
El manejo de sesiones es mediante cookies y via middleware
El objeto sesión se instancia y se coloca dentro del request
Django se comunica con el servidor web utilizando alguna de varias formas:
mod_python, mod_fastcgi, mod_wsgi, etc
Mapeador ORM
Mapeador ORM
Mapeador ORM
URLs y Vistas
El archivo urls.py actúa como puerta de entrada para las peticiones HTTP
Se definen URLs elegantes mediante expresiones regulares que redirigen a funciones de views.py
Cada expresión regular delega en una vista: Petición: http://dominio.com/fabricante/4
(r'^fabricante/(.*)/?$', 'dominio.app.views.ficha_fabr')
URLs y Vistas
La función de views.py recibe un objeto especial con la petición y todos los parámetros de la URL:
Sistema de Templates
Se centran exclusivamente en la visualización
Son ficheros .html con etiquetas especiales de Django:
Sistema de Templates
Ejemplo básico
Sistema de Templates
Sistema de Templates
Herencia de templates
Sistema de Templates
Herencia de templates
Sistema de Templates
Filtros
Permite trabajar con datos recibidos
Permite crear filtros propios http://bit.ly/2b6LjoO
Formularios
Facilitan enormemente la creación de formularios
Intervienen tres tipos de clases fundamentales:
Formularios
Creación de la clase formulario
Formularios
Programación de la vista asociada
Formularios
Inclusión en el template
Formularios
Formularios a partir de un modelo
Internacionalización
Ofrece integración con la librería GNU gettext de i18n
Internacionalización
¿Cómo indicar qué strings deben ser traducidos?
Gestión cómoda de singulares y plurales
django.contrib.auth
django.contrib.admin
Genera una aplicación ABM sobre un modelo de datos
django.contrib.admin
Experiencia de uso (Lo malo)
Muchos paquetes extras, no siempre usamos todos
Soporte a MSSQL comunitario, sin embargo es mejor que el driver de Microsoft
Algunos paquetes comunitarios no estan migrados a Python 3
Cuidado con los tipos de datos blob
No soporta stored procedure tan transparente como las view
Experiencia de uso (Lo Bueno)
Integración con software geomático (arcpy, pyQgis)
Integración con herramientas de análisis de datos como R y tiene sus propia librerías como numpy, matplotlib y pandas
Retrocompatibilidad y versiones LTS
Alta escalabilidad
Muchas apps plug and play para implementar en nuestros proyectos
Preguntas