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

TypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesTypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesSuissa
 
Python programming
Python programmingPython programming
Python programmingKeshav Gupta
 
Python 101 breve introducción al lenguaje python
Python 101  breve introducción al lenguaje pythonPython 101  breve introducción al lenguaje python
Python 101 breve introducción al lenguaje pythonemilioferreyra
 
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Paige Bailey
 
Programa en C++ ( escriba 3 números y diga cual es el mayor))
Programa en C++ ( escriba 3 números y diga cual es el mayor))Programa en C++ ( escriba 3 números y diga cual es el mayor))
Programa en C++ ( escriba 3 números y diga cual es el mayor))Alex Penso Romero
 
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | EdurekaWhat is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | EdurekaEdureka!
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to pythonManishJha237
 
Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaEduardo Oliveira
 
Introduction to NumPy
Introduction to NumPyIntroduction to NumPy
Introduction to NumPyHuy Nguyen
 
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
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoElaine Cecília Gatto
 
Python: the Project, the Language and the Style
Python: the Project, the Language and the StylePython: the Project, the Language and the Style
Python: the Project, the Language and the StyleJuan-Manuel Gimeno
 

La actualidad más candente (20)

TypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesTypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slides
 
Python programming
Python programmingPython programming
Python programming
 
Numpy
NumpyNumpy
Numpy
 
Python 101 breve introducción al lenguaje python
Python 101  breve introducción al lenguaje pythonPython 101  breve introducción al lenguaje python
Python 101 breve introducción al lenguaje python
 
Python (ejercicios)
Python (ejercicios)Python (ejercicios)
Python (ejercicios)
 
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)
 
8 python data structure-1
8 python data structure-18 python data structure-1
8 python data structure-1
 
Introduction to numpy
Introduction to numpyIntroduction to numpy
Introduction to numpy
 
Programa en C++ ( escriba 3 números y diga cual es el mayor))
Programa en C++ ( escriba 3 números y diga cual es el mayor))Programa en C++ ( escriba 3 números y diga cual es el mayor))
Programa en C++ ( escriba 3 números y diga cual es el mayor))
 
Introduction to python
 Introduction to python Introduction to python
Introduction to python
 
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | EdurekaWhat is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação Dinâmica
 
Ejercicios en java
Ejercicios en javaEjercicios en java
Ejercicios en java
 
Python - the basics
Python - the basicsPython - the basics
Python - the basics
 
Introduction to NumPy
Introduction to NumPyIntroduction to NumPy
Introduction to NumPy
 
Dictionary
DictionaryDictionary
Dictionary
 
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
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de Programação
 
Python: the Project, the Language and the Style
Python: the Project, the Language and the StylePython: the Project, the Language and the Style
Python: the Project, the Language and the Style
 

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

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
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
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
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
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
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
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
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
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

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!