SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Downloaden Sie, um offline zu lesen
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 lista 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
Gracias
@micky_miseck
miguel@cumpa.me

Weitere ähnliche Inhalte

Was ist angesagt?

UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1wozgeass
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)Laura Folgado Galache
 
Sesion1 Php Basico
Sesion1 Php BasicoSesion1 Php Basico
Sesion1 Php BasicoHugo Flores
 
JavaScript funciones
JavaScript funcionesJavaScript funciones
JavaScript funcionesjcremiro
 
Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlJesus Machicado Gomez
 
Estructuras en C
Estructuras en CEstructuras en C
Estructuras en CVane Borjas
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funcionesmoii Hp
 
Programación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en JavaProgramación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en JavaAngel Vázquez Patiño
 
Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasyguiAlbert Page
 
Funciones con vectores c++
Funciones con vectores c++Funciones con vectores c++
Funciones con vectores c++jose machado
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programaMerary Arias
 

Was ist angesagt? (20)

Programación Java
Programación JavaProgramación Java
Programación Java
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)
 
Java 8 collections
Java 8  collectionsJava 8  collections
Java 8 collections
 
Sesion1 Php Basico
Sesion1 Php BasicoSesion1 Php Basico
Sesion1 Php Basico
 
Pf con scala
Pf con scalaPf con scala
Pf con scala
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
JavaScript funciones
JavaScript funcionesJavaScript funciones
JavaScript funciones
 
Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sql
 
Estructuras en C
Estructuras en CEstructuras en C
Estructuras en C
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funciones
 
Programación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en JavaProgramación 3: Vector, stack, enumearator, iterator, listiterator en Java
Programación 3: Vector, stack, enumearator, iterator, listiterator en Java
 
XSLT
XSLTXSLT
XSLT
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
 
Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasygui
 
Funciones con vectores c++
Funciones con vectores c++Funciones con vectores c++
Funciones con vectores c++
 
Semana 1 Estructuras de Control en Java
Semana 1   Estructuras de Control en JavaSemana 1   Estructuras de Control en Java
Semana 1 Estructuras de Control en Java
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programa
 

Ähnlich wie Django y Python para todos

Kit de supervivencia para Java 8 : como prepararse para Java 9
Kit de supervivencia para Java 8 :  como prepararse para Java 9Kit de supervivencia para Java 8 :  como prepararse para Java 9
Kit de supervivencia para Java 8 : como prepararse para Java 9Eudris Cabrera
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas característicasFernando Petrola
 
Introducción a la programación en Python
Introducción a la programación en PythonIntroducción a la programación en Python
Introducción a la programación en PythonCodeSyntax
 
9. listas y for-in
9.  listas y for-in9.  listas y for-in
9. listas y for-inFaby Ignacio
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxgalletasdecoco84
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Algoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.pptAlgoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.pptDjJoss
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpAna Ruth G H
 
Temas programacion java_2
Temas programacion java_2Temas programacion java_2
Temas programacion java_2Wally IG
 
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfSesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfMarxx4
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Javier Eguiluz
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Bryangio2002
 
Manuales ...
Manuales ...Manuales ...
Manuales ...elidetjc
 

Ähnlich wie Django y Python para todos (20)

Java 8
Java 8Java 8
Java 8
 
02 introduccion a python
02 introduccion a python02 introduccion a python
02 introduccion a python
 
Kit de supervivencia para Java 8 : como prepararse para Java 9
Kit de supervivencia para Java 8 :  como prepararse para Java 9Kit de supervivencia para Java 8 :  como prepararse para Java 9
Kit de supervivencia para Java 8 : como prepararse para Java 9
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
Ejercicios Python parte 4
Ejercicios Python parte 4Ejercicios Python parte 4
Ejercicios Python parte 4
 
Introducción a la programación en Python
Introducción a la programación en PythonIntroducción a la programación en Python
Introducción a la programación en Python
 
9. listas y for-in
9.  listas y for-in9.  listas y for-in
9. listas y for-in
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Python
Python Python
Python
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Algoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.pptAlgoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.ppt
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# Sharp
 
Temas programacion java_2
Temas programacion java_2Temas programacion java_2
Temas programacion java_2
 
Taller completo
Taller completoTaller completo
Taller completo
 
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdfSesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
Sesion1_Ciencia_de_Datos-Introduccion a Pithon.pdf
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Manuales ...
Manuales ...Manuales ...
Manuales ...
 

Kürzlich hochgeladen

Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfGuillermoBarquero7
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaKANTUPAULAPORCELYUCR
 
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSBeatrizGonzales19
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralAitana
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptxEncomiendasElSherpa
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 

Kürzlich hochgeladen (6)

Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - Ofimática
 
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business Central
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 

Django y Python para todos

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Tipos y operadores básicos
  • 20. 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
  • 21.  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’]
  • 22. >>> 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]
  • 23. >>> 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
  • 24. Colecciones (Tuplas)  Una tupla es una lista 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.
  • 25. Comprensiones de listas >>> S = [x**2 for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  • 26. 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."
  • 27. 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; } }
  • 28. 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
  • 29. Lambdas >>> g = lambda x: x*2 >>> g(3) 6
  • 30.
  • 32. ¿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
  • 33. ¿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
  • 34. 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 :)
  • 37.  Documentación!  Servidor HTTP de pruebas  ORM  URL dispatcher  Templates  Admin  Forms  Middleware y Signals  Internacionalizacion  Cache  Autenticación  Muchas aplicaciones “enchufables” disponibles
  • 40. 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
  • 41. 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
  • 45. 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')
  • 46. 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:
  • 47. Sistema
 de
 Templates  Se
 centran
 exclusivamente
 en
 la
 visualización
  Son
 ficheros
.html
 con
 etiquetas
 especiales
 de
 Django:
  • 50. Sistema
 de
 Templates  Herencia de templates
  • 51. Sistema
 de
 Templates  Herencia de templates
  • 52. Sistema
 de
 Templates  Filtros  Permite trabajar con datos recibidos  Permite crear filtros propios http://bit.ly/2b6LjoO
  • 53. Formularios  Facilitan 
enormemente 
la 
creación 
de 
formularios  Intervienen 
tres tipos 
de 
clases 
fundamentales:
  • 54. Formularios  Creación de la clase formulario
  • 55. Formularios  Programación de la vista asociada
  • 57. Formularios  Formularios a partir de un modelo
  • 58. Internacionalización  Ofrece
 integración 
con 
la 
librería 
GNU 
gettext 
de
 i18n
  • 59. Internacionalización  ¿Cómo
 indicar
 qué
 strings
 deben
 ser
 traducidos?  Gestión
 cómoda
 de
 singulares
 y
 plurales
  • 61. django.contrib.admin  Genera
 una
 aplicación
 ABM
 sobre
 un
 modelo
 de
 datos
  • 63. 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
  • 64. 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