SlideShare una empresa de Scribd logo
1 de 25
H
INTRODUCCIÓN A
PYTHON
Juan Ignacio Rodríguez de León
jileon en twitter
euribates @ gmail.com
Breve historia de Python
● Creado a finales de los 80 por el Holandés Guido
Van Rossum.
● Deriva de un lenguaje previo llamado ABC.
● El objetivo era un lenguaje de programación de alto
nivel, con una sintaxis muy limpia, fácil de leer y
multiplataforma.
● Con soporte para distintos estilos de programación:
Imperativa, orientada a objetos y funcional.
● El nombre proviene del grupo de humor inglés Monty
Python, no de la serpiente.
Monty Python Flying Circus
Python 2.7 o Python 3.x
● Python 3.x no es compatible hacia atrás con
Python 2.7
● Muchos módulos de terceros aun no han
migrado a Python 3.x
● Python 2.7 es el “paso natural”: con leves
modificaciones es capaz de ejecutar código
2.7 o código 3.x
● En este taller usaremos Python 2.7
¿Por qué Python?
● Desarrollo rápido
● Sencillo pero potente
● Fácil de leer
● Software abierto
● No se entromete (Entre tú y el problema)
● Interpretado (Pero también compilado)
● Fácil de extender
– Librerías estándar
– Paquetes externos
Dasarrollo rápido
● Lenguaje de alto nivel
● Desarrollo de prototipos
● Herramientas de análisis de
rendimiento
● Facilidad para reescribir las
partes críticas en otros
lenguajes
Plan to throw one away. You will anyway
-- Fred Brooks, The Mythical Man-Month
Lo que el cliente necesita
Sencillo pero potente
Es un lenguaje compacto
New Hacker's Dictionary
http://www.catb.org/~esr/jargon/html/C/compact.html
compacto adj. Dicho de un diseño, describe la
deseable propiedad de poder ser aprehendido
de una vez en la cabeza de uno.
El ser compacto no implica trivialidad o falta de
potencia: Por ejemplo, el lenguaje C es más compacto
que Fortran, y a la vez, más potente.
Fácil de leer
Programs must be
written for people to
read, and only
incidentally for
machines to execute.
-- Abelson & Sussman, Structure and
Interpretation of Computer Programs
¿Qué hace este programa?
lista = [7, 23, 44, -2, 52]
suma = 0.0
for i in lista:
suma = suma + i
m = suma/len(lista)
print("Promedio:", m)
lista = [7, 23, 44, -2, 52]
suma = 0.0
for i in lista:
suma = suma + i
m = suma/len(lista)
print("Promedio:", m)
Una versión más corta
lista = [7, 23, 44, -2, 52]
print("Promedio:", sum(lista)/len(lista))
lista = [7, 23, 44, -2, 52]
print("Promedio:", sum(lista)/len(lista))
Software Libre
● Menos errores: Con los suficientes ojos, todos
los errores son obvios (Ley de Linus)
● Más facilidad de desarrollo de módulos,
extensiones y sistemas paralelos
● Sin puertas traseras y más seguro
● Crecimiento exponencial
● Etc...
No se entromete (Entre el problema y tu)
http://en.wikipedia.org/wiki/Rube_Goldberg
Para qué no es bueno Python
● Desarrollo a bajo nivel ("Cerca de la máquina"),
como drivers, kernels o sobre hardware limitado.
● Aplicaciones que requieran sobre todo alta
capacidad de cómputo, o en las que sea crítico
obtener el máximo rendimiento.
● Aplicaciones multi-thread sobre sistemas con
múltiples procesadores.
– pueden tener problemas de rendimiento si no se tienen en
cuenta las restricciones que impone el GIL.
Python como calculadora
Abrimos una terminal:
● [Control] + [Alt] + [T] si estamos en Linux
● [Windows] + [R] en Windows o si no funciona Inicio
→todos los programas → Accesorios → Símbolo de
sistema.
● [Ctrl] + [SpaceBar] y escribir term en MAC OS/X
Escribimos python + [Enter]
La Shell de Python
Cosas a probar en la shell
import this
help()
dir()
help(dir)
2+3
2**2000
7>2
exit()
import this
help()
dir()
help(dir)
2+3
2**2000
7>2
exit()
El programa “Hola, Mundo”
● Ejemplo habitual cuando
aprendemos un nuevo lenguaje.
● El programa más sencillo
posible capaz de hacer algo.
● Normalmente escribir el texto
"hola mundo"
● La tradición se remonta a “The C
Programming Language”, de
Brian Kernighan y Dennis
Ritchie
Hola, mundo, versión Java
class HolaMundo {
public static void main (String args[]) {
System.out.print("Hola, Mundon");
}
}
class HolaMundo {
public static void main (String args[]) {
System.out.print("Hola, Mundon");
}
}
Hola, mundo, version C#
using System;
class Program
{
public static void Main()
{
Console.WriteLine("Hello, world!");
}
}
using System;
class Program
{
public static void Main()
{
Console.WriteLine("Hello, world!");
}
}
Hola, Mundo versión COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello, world!'.
STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello, world!'.
STOP RUN.
Hola, mundo, version Python
print(“Hola, Mundo”)print(“Hola, Mundo”)
Zen del lenguaje Python (1)
‣ 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
‣ Aunque lo práctico gana a la pureza
Zen del lenguaje Python (2)
‣ 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
‣ Aunque esa manera puede no ser obvia al
principio a menos que usted sea holandés
Zen de Python (3)
‣ 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
‣ Los espacios de nombres (namespaces) son
una gran idea ¡Hagamos más de esas cosas!

Más contenido relacionado

La actualidad más candente

Arreglos ejercicios resueltos
Arreglos   ejercicios resueltosArreglos   ejercicios resueltos
Arreglos ejercicios resueltosDAN_90X
 
Ejercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadasEjercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadasAlejandro Pacheco
 
Manual de pseint
Manual de pseintManual de pseint
Manual de pseintjuanrobyn
 
Ejercicios resueltos de java
Ejercicios resueltos de javaEjercicios resueltos de java
Ejercicios resueltos de javaFaral TF
 
Guia programacion modular
Guia programacion modularGuia programacion modular
Guia programacion modularSol Hernández
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersiónAngel Vázquez Patiño
 
1. aprende python en un fin de semana sqminingsociety
1. aprende python en un fin de semana sqminingsociety1. aprende python en un fin de semana sqminingsociety
1. aprende python en un fin de semana sqminingsocietyJamilJessQuispeVilca
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorInfomania pro
 
ESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINTESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINTJuanCardenas501369
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxjgs07
 
REDES NEURONALES ADALINE
REDES NEURONALES ADALINEREDES NEURONALES ADALINE
REDES NEURONALES ADALINEESCOM
 
Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++jeysonh
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Debug PaulinaChacon
Debug PaulinaChaconDebug PaulinaChacon
Debug PaulinaChaconPau22
 

La actualidad más candente (20)

Arreglos ejercicios resueltos
Arreglos   ejercicios resueltosArreglos   ejercicios resueltos
Arreglos ejercicios resueltos
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Ejercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadasEjercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadas
 
Manual de pseint
Manual de pseintManual de pseint
Manual de pseint
 
Ejercicios resueltos de java
Ejercicios resueltos de javaEjercicios resueltos de java
Ejercicios resueltos de java
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
 
Python (ejercicios)
Python (ejercicios)Python (ejercicios)
Python (ejercicios)
 
Guia programacion modular
Guia programacion modularGuia programacion modular
Guia programacion modular
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersión
 
1. aprende python en un fin de semana sqminingsociety
1. aprende python en un fin de semana sqminingsociety1. aprende python en un fin de semana sqminingsociety
1. aprende python en un fin de semana sqminingsociety
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensamblador
 
ESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINTESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINT
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptx
 
REDES NEURONALES ADALINE
REDES NEURONALES ADALINEREDES NEURONALES ADALINE
REDES NEURONALES ADALINE
 
Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Manual pseint
Manual pseintManual pseint
Manual pseint
 
Debug PaulinaChacon
Debug PaulinaChaconDebug PaulinaChacon
Debug PaulinaChacon
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 

Destacado

¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanbanJuan Rodríguez
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012Javier_J
 
Django avanzado: Dia 2
Django avanzado: Dia 2Django avanzado: Dia 2
Django avanzado: Dia 2Esau Rodriguez
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Desarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidDesarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidTatiana Al-Chueyr
 
Answering Your Questions on Social Media Consulting (Alexis Grant)
Answering Your Questions on Social Media Consulting (Alexis Grant)Answering Your Questions on Social Media Consulting (Alexis Grant)
Answering Your Questions on Social Media Consulting (Alexis Grant)Alexis Grant
 
Lesson 7 data communication
Lesson 7 data communicationLesson 7 data communication
Lesson 7 data communicationkenjiecueto
 
Lectura de apoyo 1 la práctica de la innovación en las empresas de servicios
Lectura de apoyo 1 la práctica de la innovación en las empresas de serviciosLectura de apoyo 1 la práctica de la innovación en las empresas de servicios
Lectura de apoyo 1 la práctica de la innovación en las empresas de serviciosCentro Cultural Hanan Al-Mutawa
 
Vision moral y economica de la empresarialidad
Vision moral y economica de la empresarialidadVision moral y economica de la empresarialidad
Vision moral y economica de la empresarialidadJose Luis Tapia
 
Calidad, Qué puedo hacer?
Calidad, Qué puedo hacer?Calidad, Qué puedo hacer?
Calidad, Qué puedo hacer?GeneXus
 
Sektörden Haberler Emarsys Ağustos 2013
Sektörden Haberler Emarsys Ağustos 2013Sektörden Haberler Emarsys Ağustos 2013
Sektörden Haberler Emarsys Ağustos 2013Emarsys Türkçe
 

Destacado (20)

01 el lenguaje Python
01 el lenguaje Python01 el lenguaje Python
01 el lenguaje Python
 
¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
 
Django Avanzado: Dia3
Django Avanzado: Dia3Django Avanzado: Dia3
Django Avanzado: Dia3
 
Presentación appy/pod
Presentación appy/podPresentación appy/pod
Presentación appy/pod
 
Django avanzado: Dia 2
Django avanzado: Dia 2Django avanzado: Dia 2
Django avanzado: Dia 2
 
Django avanzado: Dia1
Django avanzado: Dia1Django avanzado: Dia1
Django avanzado: Dia1
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Desarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidDesarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y Android
 
Publicacion ranking junio 2013
Publicacion ranking junio 2013Publicacion ranking junio 2013
Publicacion ranking junio 2013
 
Answering Your Questions on Social Media Consulting (Alexis Grant)
Answering Your Questions on Social Media Consulting (Alexis Grant)Answering Your Questions on Social Media Consulting (Alexis Grant)
Answering Your Questions on Social Media Consulting (Alexis Grant)
 
Jornada mundial del enfermo 2011
Jornada mundial del enfermo 2011Jornada mundial del enfermo 2011
Jornada mundial del enfermo 2011
 
Lesson 7 data communication
Lesson 7 data communicationLesson 7 data communication
Lesson 7 data communication
 
Lectura de apoyo 1 la práctica de la innovación en las empresas de servicios
Lectura de apoyo 1 la práctica de la innovación en las empresas de serviciosLectura de apoyo 1 la práctica de la innovación en las empresas de servicios
Lectura de apoyo 1 la práctica de la innovación en las empresas de servicios
 
Vision moral y economica de la empresarialidad
Vision moral y economica de la empresarialidadVision moral y economica de la empresarialidad
Vision moral y economica de la empresarialidad
 
Calidad, Qué puedo hacer?
Calidad, Qué puedo hacer?Calidad, Qué puedo hacer?
Calidad, Qué puedo hacer?
 
BHW Solicitors
BHW SolicitorsBHW Solicitors
BHW Solicitors
 
Sektörden Haberler Emarsys Ağustos 2013
Sektörden Haberler Emarsys Ağustos 2013Sektörden Haberler Emarsys Ağustos 2013
Sektörden Haberler Emarsys Ağustos 2013
 

Similar a 00 introducción a Python

Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?  Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador? Luis Stifler
 
Manual de python
Manual de pythonManual de python
Manual de pythonULEAM
 
Introduccion Python
Introduccion PythonIntroduccion Python
Introduccion Pythonreinaldodu
 
Introducción a python
Introducción a pythonIntroducción a python
Introducción a pythonreinaldodu
 
python-para-todos.pdf
python-para-todos.pdfpython-para-todos.pdf
python-para-todos.pdfJaviMartin21
 
Python para todos
Python para todosPython para todos
Python para todosErik Gur
 
python-para-todos.pdf
python-para-todos.pdfpython-para-todos.pdf
python-para-todos.pdfRafalJMalave
 
Python para todos
Python para todosPython para todos
Python para todossebas145713
 
Python_para_todos.pdf
Python_para_todos.pdfPython_para_todos.pdf
Python_para_todos.pdfssuser626fe4
 
Lenguaje de programacion java
Lenguaje de programacion javaLenguaje de programacion java
Lenguaje de programacion javakimberly orellana
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusGladys Arce
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusAbefo
 
Unidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre AlgoritmosUnidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre Algoritmosmarthaill10
 

Similar a 00 introducción a Python (20)

Introducción
IntroducciónIntroducción
Introducción
 
Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?  Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?
 
Manual de python
Manual de pythonManual de python
Manual de python
 
Introduccion Python
Introduccion PythonIntroduccion Python
Introduccion Python
 
Introducción a python
Introducción a pythonIntroducción a python
Introducción a python
 
Atix05
Atix05Atix05
Atix05
 
python-para-todos.pdf
python-para-todos.pdfpython-para-todos.pdf
python-para-todos.pdf
 
Python para todos
Python para todosPython para todos
Python para todos
 
Python para Todos
Python para TodosPython para Todos
Python para Todos
 
python-para-todos.pdf
python-para-todos.pdfpython-para-todos.pdf
python-para-todos.pdf
 
Python para todos
Python para todosPython para todos
Python para todos
 
Libro python para todos
Libro   python para todosLibro   python para todos
Libro python para todos
 
Python para todos
Python para todosPython para todos
Python para todos
 
Python_para_todos.pdf
Python_para_todos.pdfPython_para_todos.pdf
Python_para_todos.pdf
 
Python_para_todos.pdf
Python_para_todos.pdfPython_para_todos.pdf
Python_para_todos.pdf
 
Lenguaje de programacion java
Lenguaje de programacion javaLenguaje de programacion java
Lenguaje de programacion java
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplus
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplus
 
Unidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre AlgoritmosUnidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre Algoritmos
 
SILDESHARE.pdf
SILDESHARE.pdfSILDESHARE.pdf
SILDESHARE.pdf
 

Más de Juan Rodríguez

Estados imposibles y como evitarlos
Estados imposibles y como evitarlosEstados imposibles y como evitarlos
Estados imposibles y como evitarlosJuan Rodríguez
 
Introduction to BDD (Behavior-Driven Development)
Introduction to BDD (Behavior-Driven Development)Introduction to BDD (Behavior-Driven Development)
Introduction to BDD (Behavior-Driven Development)Juan Rodríguez
 
Vue.js: El framework javascript para muggles
Vue.js: El framework javascript para mugglesVue.js: El framework javascript para muggles
Vue.js: El framework javascript para mugglesJuan Rodríguez
 
Introducción a jupyter (antes i python notebook)
Introducción a jupyter (antes i python notebook)Introducción a jupyter (antes i python notebook)
Introducción a jupyter (antes i python notebook)Juan Rodríguez
 
Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)Juan Rodríguez
 
Viaje al centro de la locura con Javascript
Viaje al centro de la locura con JavascriptViaje al centro de la locura con Javascript
Viaje al centro de la locura con JavascriptJuan Rodríguez
 
Una imagen vale más que mil mentiras
Una imagen vale más que mil mentirasUna imagen vale más que mil mentiras
Una imagen vale más que mil mentirasJuan Rodríguez
 
Introducción a DSL (Lenguajes Específicos de Dominios) con Python
Introducción a DSL (Lenguajes Específicos de Dominios) con PythonIntroducción a DSL (Lenguajes Específicos de Dominios) con Python
Introducción a DSL (Lenguajes Específicos de Dominios) con PythonJuan Rodríguez
 
Presentación estetoscopio
Presentación estetoscopioPresentación estetoscopio
Presentación estetoscopioJuan Rodríguez
 
Charla introducción a RaspberryPI
Charla introducción a RaspberryPICharla introducción a RaspberryPI
Charla introducción a RaspberryPIJuan Rodríguez
 
Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3Juan Rodríguez
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcionalJuan Rodríguez
 
Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008Juan Rodríguez
 
Algunos recursos para desarrollo Web
Algunos recursos para desarrollo WebAlgunos recursos para desarrollo Web
Algunos recursos para desarrollo WebJuan Rodríguez
 
Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)Juan Rodríguez
 

Más de Juan Rodríguez (16)

Estados imposibles y como evitarlos
Estados imposibles y como evitarlosEstados imposibles y como evitarlos
Estados imposibles y como evitarlos
 
Introduction to BDD (Behavior-Driven Development)
Introduction to BDD (Behavior-Driven Development)Introduction to BDD (Behavior-Driven Development)
Introduction to BDD (Behavior-Driven Development)
 
Vue.js: El framework javascript para muggles
Vue.js: El framework javascript para mugglesVue.js: El framework javascript para muggles
Vue.js: El framework javascript para muggles
 
Introducción a jupyter (antes i python notebook)
Introducción a jupyter (antes i python notebook)Introducción a jupyter (antes i python notebook)
Introducción a jupyter (antes i python notebook)
 
Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)
 
Viaje al centro de la locura con Javascript
Viaje al centro de la locura con JavascriptViaje al centro de la locura con Javascript
Viaje al centro de la locura con Javascript
 
Una imagen vale más que mil mentiras
Una imagen vale más que mil mentirasUna imagen vale más que mil mentiras
Una imagen vale más que mil mentiras
 
Introducción a DSL (Lenguajes Específicos de Dominios) con Python
Introducción a DSL (Lenguajes Específicos de Dominios) con PythonIntroducción a DSL (Lenguajes Específicos de Dominios) con Python
Introducción a DSL (Lenguajes Específicos de Dominios) con Python
 
Presentación estetoscopio
Presentación estetoscopioPresentación estetoscopio
Presentación estetoscopio
 
Charla introducción a RaspberryPI
Charla introducción a RaspberryPICharla introducción a RaspberryPI
Charla introducción a RaspberryPI
 
Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
 
Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008
 
Algunos recursos para desarrollo Web
Algunos recursos para desarrollo WebAlgunos recursos para desarrollo Web
Algunos recursos para desarrollo Web
 
Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)
 
Extranet Parlamento
Extranet ParlamentoExtranet Parlamento
Extranet Parlamento
 

Último

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Último (20)

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

00 introducción a Python

  • 1. H INTRODUCCIÓN A PYTHON Juan Ignacio Rodríguez de León jileon en twitter euribates @ gmail.com
  • 2. Breve historia de Python ● Creado a finales de los 80 por el Holandés Guido Van Rossum. ● Deriva de un lenguaje previo llamado ABC. ● El objetivo era un lenguaje de programación de alto nivel, con una sintaxis muy limpia, fácil de leer y multiplataforma. ● Con soporte para distintos estilos de programación: Imperativa, orientada a objetos y funcional. ● El nombre proviene del grupo de humor inglés Monty Python, no de la serpiente.
  • 4. Python 2.7 o Python 3.x ● Python 3.x no es compatible hacia atrás con Python 2.7 ● Muchos módulos de terceros aun no han migrado a Python 3.x ● Python 2.7 es el “paso natural”: con leves modificaciones es capaz de ejecutar código 2.7 o código 3.x ● En este taller usaremos Python 2.7
  • 5. ¿Por qué Python? ● Desarrollo rápido ● Sencillo pero potente ● Fácil de leer ● Software abierto ● No se entromete (Entre tú y el problema) ● Interpretado (Pero también compilado) ● Fácil de extender – Librerías estándar – Paquetes externos
  • 6. Dasarrollo rápido ● Lenguaje de alto nivel ● Desarrollo de prototipos ● Herramientas de análisis de rendimiento ● Facilidad para reescribir las partes críticas en otros lenguajes Plan to throw one away. You will anyway -- Fred Brooks, The Mythical Man-Month
  • 7. Lo que el cliente necesita
  • 8. Sencillo pero potente Es un lenguaje compacto New Hacker's Dictionary http://www.catb.org/~esr/jargon/html/C/compact.html compacto adj. Dicho de un diseño, describe la deseable propiedad de poder ser aprehendido de una vez en la cabeza de uno. El ser compacto no implica trivialidad o falta de potencia: Por ejemplo, el lenguaje C es más compacto que Fortran, y a la vez, más potente.
  • 9. Fácil de leer Programs must be written for people to read, and only incidentally for machines to execute. -- Abelson & Sussman, Structure and Interpretation of Computer Programs
  • 10. ¿Qué hace este programa? lista = [7, 23, 44, -2, 52] suma = 0.0 for i in lista: suma = suma + i m = suma/len(lista) print("Promedio:", m) lista = [7, 23, 44, -2, 52] suma = 0.0 for i in lista: suma = suma + i m = suma/len(lista) print("Promedio:", m)
  • 11. Una versión más corta lista = [7, 23, 44, -2, 52] print("Promedio:", sum(lista)/len(lista)) lista = [7, 23, 44, -2, 52] print("Promedio:", sum(lista)/len(lista))
  • 12. Software Libre ● Menos errores: Con los suficientes ojos, todos los errores son obvios (Ley de Linus) ● Más facilidad de desarrollo de módulos, extensiones y sistemas paralelos ● Sin puertas traseras y más seguro ● Crecimiento exponencial ● Etc...
  • 13. No se entromete (Entre el problema y tu) http://en.wikipedia.org/wiki/Rube_Goldberg
  • 14. Para qué no es bueno Python ● Desarrollo a bajo nivel ("Cerca de la máquina"), como drivers, kernels o sobre hardware limitado. ● Aplicaciones que requieran sobre todo alta capacidad de cómputo, o en las que sea crítico obtener el máximo rendimiento. ● Aplicaciones multi-thread sobre sistemas con múltiples procesadores. – pueden tener problemas de rendimiento si no se tienen en cuenta las restricciones que impone el GIL.
  • 15. Python como calculadora Abrimos una terminal: ● [Control] + [Alt] + [T] si estamos en Linux ● [Windows] + [R] en Windows o si no funciona Inicio →todos los programas → Accesorios → Símbolo de sistema. ● [Ctrl] + [SpaceBar] y escribir term en MAC OS/X Escribimos python + [Enter]
  • 16. La Shell de Python
  • 17. Cosas a probar en la shell import this help() dir() help(dir) 2+3 2**2000 7>2 exit() import this help() dir() help(dir) 2+3 2**2000 7>2 exit()
  • 18. El programa “Hola, Mundo” ● Ejemplo habitual cuando aprendemos un nuevo lenguaje. ● El programa más sencillo posible capaz de hacer algo. ● Normalmente escribir el texto "hola mundo" ● La tradición se remonta a “The C Programming Language”, de Brian Kernighan y Dennis Ritchie
  • 19. Hola, mundo, versión Java class HolaMundo { public static void main (String args[]) { System.out.print("Hola, Mundon"); } } class HolaMundo { public static void main (String args[]) { System.out.print("Hola, Mundon"); } }
  • 20. Hola, mundo, version C# using System; class Program { public static void Main() { Console.WriteLine("Hello, world!"); } } using System; class Program { public static void Main() { Console.WriteLine("Hello, world!"); } }
  • 21. Hola, Mundo versión COBOL IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY 'Hello, world!'. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY 'Hello, world!'. STOP RUN.
  • 22. Hola, mundo, version Python print(“Hola, Mundo”)print(“Hola, Mundo”)
  • 23. Zen del lenguaje Python (1) ‣ 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 ‣ Aunque lo práctico gana a la pureza
  • 24. Zen del lenguaje Python (2) ‣ 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 ‣ Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés
  • 25. Zen de Python (3) ‣ 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 ‣ Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!