Sunteți pe pagina 1din 62

Fco Javier Lucena Lucena

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

Why use it?


Es un lenguaje limpio, tiene una sintaxis
legible.
Lenguaje muy parecido al pseudocdigo
Recomendado para empezar a programar.

Why use it?


Python is Open !!
Usar
Distribuir
Incluso uso comercial
Python Software Foundation
Licencia Python 2.6.2
9

Why use it?


Powerful and fast
Se puede resolver un problema en cualquier
mbito.
La biblioteca estndar lleva pilas incluidas
Mdulos, paquetes, frameworks

Compilador de byte muy optimizado


*.pyc (bitecode)
10

Why use it?


Multiplataforma
Windows, Linux/Unix, OS/2, Mac incluso Amiga
.NET, Java... Dispositivos Mviles... Ej: Nokia

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)

sudo apt-get install geany

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

Desde consola ejecutamos python o ipython

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

Saber el tipo de dato que contiene una


variable: type(id_variable)
22

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

Asignacin Mltiple en una lnea


>>> a,b = 4,9
>>> a
4
>>> a,b = b,a
>>> a
>>> 9

aux=a;
a=b;
b=aux;
23

Colecciones
Lista (vector array)
Puede contener cualquier tipo de dato
lista = [ 35, Hola, True, [1, 2, 3]]

Acceso a los elementos: lista[indice]


indice=0,1...
lista[3][0] # Accede al elemento 1

[ ] Admite nmeros negativos


lista[-2] devolvera el elemento True

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

Mas ligeras que las listas


Consumen menos memoria
25

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

Palabra reservada return


33

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.

Hay mdulos matemticos, web,


programacin evolutiva, inteligencia artificial
40

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

paquetes instalados y disponibles


sudo pip install yolk

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()

Esto crea una instancia de ID_Clase y la


asigna a la variable x.
Si queremos definir nuestro propio
constructor, bastar con definir una
funcin __init__
47

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

Video Wii Motion + Python + Linux

59

Encuesta

http://go4.es/0akl

60

Fuentes

Python para todos


Ral Gonzalez Duque

Aprenda a Pensar Como un Programador


con Python
Allen Downey Jeffrey Elkner Chris Meyers

61

Licencia
Fco Javier Lucena Lucena
fran.lucena@gmail.com
@frannlu

S-ar putea să vă placă și