ndice
Introduccin
Propiedades
Why use it ?
Instalacin
Sintaxis
Ejemplos
http://xkcd.com/
Introduccin
Python es un lenguaje de programacin
dinmica muy poderoso.
Creado por Guido Van Rossum en 1991
Comparado con Tcl, Perl, Ruby, Scheme o
Java
Propiedades
Interpretado o de script
Flexibilidad y Portabilidad
Fcil de depurar
Reduce el tamao del programa
Propiedades
Tipado Dinmico
No es necesario declarar el tipo de dato que va a
contener una determinada variable.
El tipo se determinara en tiempo de ejecucin.
El tipo puede cambiar si se asigna un valor
diferente.
Propiedades
Fuertemente Tipado
Python distingue las churras de las merinas
No se puede tratar una variable como si fuera de
un tipo distinto al que tiene. (Conversiones)
No necesita identificar explcitamente los tipos
de datos para inicializar variables
Ej: Sumar la cadena 1 y en entero 2
7
Se integra con:
COM (extensiones windows)
bibliotecas Java (Jython),
.NET (IronPython)
Fcil de aprender
Amplia y buena documentacin en lnea.
11
Aplicaciones
Desarrollo Web e Internet
Bases de Datos
Desarrollo Software
Juegos y Grficos 3D
Bioinformatica
Fsica
Educacin
http://www.python.org/about/apps/
http://pypi.python.org/pypi
12
Casos de xito
13
Casos de xito
Software desarrollado en Python cabe
resaltar Google App Engine(entorno Cloud
Computing de Google)
The Washington Post (Python + Django),
Facebook (la parte de gestin de mensajes e
informacin en tiemporeal)
Zope (servidor de aplicaciones)
Plone (CMS [sistema de gestin
decontenidos] utilizado por la NASA,
Canonical, etc)
14
Instalacin
http://www.python.org/download/
Disponible en la mayora de distribuciones
Gnu/Linux
sudo apt-get install ipython / bpython
http://ipython.scipy.org/moin/
Autocompletado (In[1] : pr + Tab)
Operador ? (Ayuda mtodos)
15
Herramientas
IDE
Eclipse con el plugin pyDev, Aptana, NetBeans,
Geany, pyScripter, Ninja IDE, Stani's Python
Editor, Wingware Python IDE, Komodo, Pyragua,
Eric
Editor
Editra, emacs, Notepad++, SciTE
Shell
Ipython, PyCrust, PyShell
http://wiki.python.org/moin/PythonEditors.
16
Instalacin
Interprete Interactivo
Control + d
Control + z
17
Filosofa Python
Import this
Bello es mejor que feo.
Explcito es mejor que implcito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Ralo es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son
18
Instalacin
Script
Ejecutar un fichero desde la linea de comandos
Extensin ----> mi_fichero.py
Shebang ----> #!/usr/bin/python
# -*- coding: utf-8 -*- Unicode
python hola.py [ ./hola.py (chmod +x) ]
#!/usr/bin/python
printMensajeenviado
printPulsaunatecla
raw_input()
19
Por qu empece a
programar en Python ?
Sintaxis
Se distinguen Maysculas minsculas
No se necesita carcter para indicar el fin de
una sentencia. ({})
Los bloques son especificados por
indentacin
# Esta lnea es un comentario
Var = 3 # Asignacin con el carcter =
Var == Var1 # Operador igualdad
Var -= 1 # Para incrementar Var += 1
21
Tipos de Datos
Nmeros : entero, flotante, complejo
Cadenas de Texto
Valores Booleanos
3 , 4.57, 2 + 3j
Hola Mundo
True - False
Variables
los identificadores, palabras clave... en
Python son case-sensitive, distinguen
entre maysculas y minsculas.
No es necesario declarar las variables
Al utilizarlas se declaran automticamente
aux=a;
a=b;
b=aux;
23
Colecciones
Lista (vector array)
Puede contener cualquier tipo de dato
lista = [ 35, Hola, True, [1, 2, 3]]
lista[inicio:fin]
Lista[1:] #desde 1 a fin
Lsita [:2] # desde inicio a 2
24
Colecciones
Tupla
Declaracin: tupla = {1, True, hola}
Acceso: tupla[indice]
Inmutables
Sus valores no se pueden modificar
Tamao fijo
Cadena de Texto
cadena = Que risa me da C
cadena[4] # devuelve r
cadena[:3] # devuelve Que
26
Colecciones
Diccionario
Relacionan una clave y un valor
Acceso: dicc[clave]
Dicc = {75934029J : Lopez Lopez Jose,
64790681H : Perez Pepito}
27
Estructuras de Control
Condicional
>>>x=int(raw_input("Introduceunnmero
entero:"))
>>>ifx<0:
...x=0
...printNegativocambiadoacero
...elifx==0:
...printCero
...elifx==1:
switch
...printUno
...else:
case
...printMs
...
IndentationError:expectedanindentedblock
28
Estructuras de Control
Sentencia for
No hay valor inicial, ni condicin de parada, ni un
incremento.
Iterar por los elementos de una secuencia
foreach en OO PHP
>>>#Mediralgunascadenas:
...a=[gato,ventana,defenestrar]
>>>forxina:
...printx,len(x)
...
gato4
ventana7
defenestrar11
29
Estructura de control
30
Estructura de control
Funcin range()
>>>a=[Cinco,lobitos,tiene,
la,loba]
>>>foriinrange(len(a)):
...printi,a[i]
...
0Cinco
1lobitos
2tiene
3la
4loba
31
Estructuras de Control
numero=23
detener=False
whilenotdetener:
adivina=int(raw_input('Unentero:'))
while
ifadivina==numero:
print'Enhorabuena,hasacertado!.'
detener=True#Estocausaqueel
#buclesedetenga
elifadivina<numero:
print'No,esunnumeromayor.'
else:#tienesqueacertar
print'No,esunnumeromenor.'
else:
print'Elbuclewhilehaterminado.'
print'Puedohacerloquequieroaqui.'
print'Hecho.'
32
Funciones
>>>deffib(n):#escribirlaserieFibonaccihastan
...
...a,b=0,1
...whileb<n:
...printb,
...a,b=b,a+b
...
>>>#Yahorallamamosalafuncinrecindefinida:
...fib(2000)
1123581321345589144233377610987
1597
Funciones
Documentar
def mi_funcion(param1, param2):
"""Esta funcin imprime los dos valores
pasados como parmetros"""
print param1
print param2
34
Funciones
Devolver Valores
deff(x,y):
returnx*2,y*2
a,b=f(1,2)
35
Funciones
Parmetros por defecto
Parmetros Extra (tupla)
defvarios(param1,param2,*otros):
forvalinotros:
printotros
varios(1,2)
varios(1,2,3)
varios(1,2,3,4)
36
Funciones lambda
Crear funciones annimas en lnea
defes_par(n):
return(n%2.0==0)
l=[1,2,3]
l2=filter(es_par,l)
l=[1,2,3]
l2=filter(lambdan:n%2.0==0,l)
37
Mdulos
Fichero que contiene definiciones y
sentencias.
El nombre del fichero es el nombre del
modulo sin la extensin .py
Palabra reservada import - from
#!/usr/bin/python
import nombre_modulo
nombre_modulo.funcion()
import nombre_modulo from mi_funcion
mi_funcion()
....
38
Mdulos
David Goodger en su obra Code Like a
Pythonista: Idiomatic Python
LUKE: Es mejor from module import * que los
imports explcitos?
YODA: No, no mejor. Ms rpido, ms fcil, ms
seductor.
LUKE: Pero cmo sabr por qu los imports
explcitos son mejores que la forma con el
carcter comodn?
YODA: Saberlo tu podrs cuando tu cdigo
intentes leer seis meses despus.
39
Mdulos
Hay una gran variedad de mdulos
Antes de implementar, busca !
Probablemente esta ya hecho.
Mdulos
Donde estn?
Variable de entorno: PYTHONPATH
>>> import sys
>>> sys.path
41
Mdulos
administrar la instalacin de
todos estos paquetes existe pip
Para instalar:
sudo apt-get install python-pip python-dev buildessential
sudo pip install --upgrade pip
yolk -l
yolk -l | grep yolk
42
Paquetes
Sirven para organizar los mdulos
Para hacer que Python trate a un directorio
como un paquete es necesario crear un
archivo __init__.py
import paq.subpaq.modulo
paq.subpaq.modulo.func()
http://pypi.python.org/pypi
43
Paquetes
Sonido/
__init__.py
Formatos/
__init__.py
leerwav.py
escriwav.py
leeraiff.py
escriaiff.py
44
Clases
Sintaxis mnima y nueva Semntica
classnombreClase:
<sentencia1>
.
.
.
<sentenciaN>
45
Clases
classMiClase:
"Simpleclasedeejemplo"
i=12345
deff(self):
returnhola,mundo
MiClase, adems de definir la clase, es un
objeto en s mismo.
MiClase.i y MiClase.f son referencias a
atributos vlidas, que devuelven un entero
y un objeto mtodo, respectivamente
46
Clases
La instanciacin de clases utiliza notacin
de funcin.
x =ID_Clase()
Clases
>>>classComplejo:
...def__init__(self,parteReal,
parteImaginaria):
...self.r=parteReal
...self.i=parteImaginaria
...
>>>x=Complejo(3.0,4.5)
>>>x.r,x.i
(3.0,4.5)
48
Clases
classMiClase:
"Simpleclasedeejemplo"
i=12345
deff(self):
returnhola,mundo
X=MiClase()
x.contador=1
whilex.contador<10
x.contador=x.contador*2
printx.contador
delx.contador
49
Clases
Mtodo de clase
Mtodo de instancia
classBolsa:
def__init__(self):
self.datos=[]
defagregar(self,x):
self.datos.append(x)
defagregarDosVeces(self,x):
self.agregar(x)
self.agregar(x)
50
Clases
Herencia
51
Biblioteca Estndar
Sistema operativo
>>>importos
>>>dir(os)
<devuelveunalistadetodaslasfuncionesdel
mdulo>
>>>help(os)
<devuelveunextensomanualcreadoapartirde
lascadenasdedocumentacindelmdulo>
>>>os.getcwd()
/home/fran
52
Biblioteca Estndar
Argumentos linea ordenes
python demo.py un dos tres
>>> import sys
>>> print sys.argv
[demo.py, un, dos, tres]
53
Biblioteca Estndar
import re
import math
import urllib2
import ramdom
import datetime
import threading
import logging
54
Ejemplo
55
Ejemplo
56
Ejemplo
57
Ejemplo
58
Ejemplo
59
Encuesta
http://go4.es/0akl
60
Fuentes
61
Licencia
Fco Javier Lucena Lucena
fran.lucena@gmail.com
@frannlu