Вы находитесь на странице: 1из 53

El lenguaje Python

Programacin Declarativa Avanzada


Curso 2008- 2009

Introduccin
Historia
Filosofa
Caractersticas
a. Tipos de datos
b. Expresiones y control de flujo
c. Funciones
5. Python VS Haskell
a. Listas por compresin
b. Funciones sobre listas
c. Funciones (lambda)

El Lenguaje Python

1.
2.
3.
4.

El Lenguaje Python

6. Esado del lenguaje


a. Uso
b. Aplicaciones que usan python
7. Ejemplos
8. Bibliografa
9. Y para terminar
a. Experiencia
b. Conclusiones

El Lenguaje Python

Bloque 1
4


Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Podemos destacar
Es un lenguaje de programacin de alto
nivel y de propsito general. El uso de
sangras como delimitadores de bloques no
es usual.
Python permite mltiples paradigmas de
programacin y contiene un completo
sistema de tipos dinmicos y gestin de
memoria.
Tiene la misma filosofa que Linux. Y es
gestionado por la organizacin Python
Software Foundation.

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Cundo naci? Qu ha pasado


desde entonces?
Fue concebido a finales de los aos
80

Su antecesor fue el lenguaje ABC


Python se hizo pblico el 16 de octubre de
2000
Actualmente la versin que tenemos
disponible es la de Python 3.0, publicada en
diciembre de 2008

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.


Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Tiene una filosofa multi-paradigma

La programacin orientada a objetos y la


estructurada est completamente soportada
Incorpora ciertas funcionalidades que
permiten la programacin FUNCIONAL y
orientada a aspectos
Python es de tipificado dinmico y resolucin
dinmica de nombres

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.


Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Admite parcialmente
funcional al estilo LISP

la

programacin

Existen varios mdulos que implementan


herramientas funcionales prestadas de
Haskell y Standard ML
Rechaza las sintaxis exuberantes

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.


Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Zen de Python:
1.
2.
3.
4.
5.

Bonito es mejor que feo


Simple es mejor que complejo
Plano es mejor que anidado
La legibilidad cuenta
Debera haber una manera (y
preferiblemente slo una) obvia de
hacerlo
6. Los namespaces son buena idea
Hagamos ms!

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

El Lenguaje Python

Bloque 2
10

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Un programa en Python puede ser


descompuesto en mdulos, sentencias,
expresiones y objetos

Programa

El Lenguaje Python

1.
2.
3.
4.

Mdulos

Expresiones
11

Sentencias

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Objetivos y tipos de datos


En Python todo esta representado mediante
objetos o relaciones entre objetos

Cada objeto tiene una identidad, un tipo y


un valor
Los objetos nunca son explcitamente
destruidos
Python usa el denominado duck typing y
tiene objetos tipificados y variables no
tipificadas

El Lenguaje Python

1.
2.
3.
4.

12

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Si camina como un pato, nada como un


pato y hace quack como un pato Yo
dira que es un pato
James Whitcomb Riley

Para esta funcin el objeto que recibe es un


pato

El Lenguaje Python

1.
2.
3.
4.

13

1.
2.
3.
4.

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

El Lenguaje Python

14

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Python proporciona una serie de tipos


predefinidos
Tipo
str

Clase
String

unicode
list

String
Sequence

tuple

Sequence

set

Set

dict

Mapping

int

numbers.Integral

float

numbers.Real

complex

numbers.Complex

bool

numbers.Integral

Descripcin
Secuencia inmutable
de caracteres
Versin Unicode de str
Secuencia mutable de
objetos de tipo
arbitrario
Secuencia inmutable
de objetos de tipo
arbitrario
Conjunto mutable de
objetos sin orden de
tipo arbitrario
Grupo mutable de
pares clave-valor
Entero de magnitud no
definida, slo limitada
por la memoria
disponible
Nmeros reales en
punto flotante de
doble precisin. Rango
de valores
dependiente de la
mquina
Nmeros complejos
representados
mediante un par de
nmeros de punto
flotante.
Valores de verdad

El Lenguaje Python

1.
2.
3.
4.

15

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Sentencia
Asignacin
Llamada
print
If/elif/else

Rol
Creacin de referencias
Ejecucin de funciones
Impresin de objetos
Selectiva

for/else

Iteracin sobre una secuencia

while/else

Bucle

break, continue

Salto en bucle

pass

Sentencia nula

assert
try/except/finally

Asercin
Captura de excepciones

Ejemplo
a, b, c = 'good', 'bad', 'ugly'

log.write("spam, ham\n")
print 'The Killer', joke
if "python" in text:
print text
for x in mylist:
print x
while X > Y:
print 'hello'
while True:
if not line: break
while True:
pass
assert x > y
try:

action( )
except:
print 'action error'

raise
import, from

Lanzar excepciones
Acceso a mdulos

def, return, yield

Definicin de funciones

class

Definicin de clases

global

Declaraciones globales

del

Eliminacin de referencias

with/as

Creacin de contextos

raise endSearch, location

import sys
from sys import stdin
def f(a, b, c=1, *d):
return a+b+c+d[0]
def gen(n):
for i in n, yield i*2
class subclass(Superclass):
staticData = []
def function( ):
global x, y
x = 'new'
del data[k]
del data[i:j]
del obj.attr
del variable
with open('data') as myfile:
process(myfile)

El Lenguaje Python

1.
2.
3.
4.

16

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Son la estructura
proporciona Python

ms

bsica

que

def <identificador>(arg1, arg2,..., argN):


[Docum entacin]
<sentencias>

def fib(n): # return Fibonacci series up to n


"""Return a list containing the Fibonacci series up to n."""
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result

El Lenguaje Python

1.
2.
3.
4.

>>> fib(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

17

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Si se cierra el editor de Python y se vuelve


abrir, las definiciones que existan se pierden

Debemos utilizar un editor, para poder


definirlas y guardarlas (*.py)
Las definiciones de un mdulo se pueden
importar hacia otros mdulos o hacia el
mdulo principal

El Lenguaje Python

1.
2.
3.
4.

18

1.
2.
3.
4.

5.

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
a. Objetos y tipos de
datos
b. Sentencias
c. Funciones
d. Mdulos
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Python usa los espacios en blanco como


separadores de bloques

El Lenguaje Python

19

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

20

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Notacin similar a la de conjuntos por


comprensin

Cada cualificador puede ser:


Un generador,
Una expresin booleana, o
Una definicin local

El Lenguaje Python

1.
2.
3.
4.
5.

21

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

La sintaxis difiere ligeramente de la de


Haskell

El ejemplo anterior sera ahora de la forma

El Lenguaje Python

1.
2.
3.
4.
5.

22

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Aplica una funcin a todos los elementos de


la lista, devolviendo una lista con los
resultados

El Lenguaje Python

1.
2.
3.
4.
5.

23

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

El mismo ejemplo en versiones distintas 2.5.1


y la 3.0

El Lenguaje Python

1.
2.
3.
4.
5.

24

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Esta funcin nos permite seleccionar los


elementos de una lista que cumplen cierta
propiedad

El Lenguaje Python

1.
2.
3.
4.
5.

25

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

El predicado es la funcin que determina el


cumplimiento de la condicin y se devuelve
un iterador sobre la secuencia de elementos
que cumplen la condicin

El Lenguaje Python

1.
2.
3.
4.
5.

26

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

Para realizar
acumulativa

operaciones

de

forma

El Lenguaje Python

1.
2.
3.
4.
5.

27

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

El foldl1 realiza un plegado de las listas de


izquierda a derecha

El Lenguaje Python

1.
2.
3.
4.
5.

28

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

En Python si disponemos de la funcin


reduce como tal, se encuentra dentro del
mdulo functools

El Lenguaje Python

1.
2.
3.
4.
5.

29

6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
a. Listas por
comprensin
b. Funciones sobre
listas
c. Operador Lambda
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

A veces necesitamos pequeas funciones que


acten como predicados o que combinan
elementos de alguna manera
Estas funciones se denominan annimas o
lambda
El Lenguaje Python

1.
2.
3.
4.
5.

30

7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
a. Uso
b. Aplicaciones que
usan Python
Ejemplos
Bibliografa
Y para terminar

Se usa frecuentemente para aplicaciones


web, por ej. Servidor Apache
Servidores de aplicaciones como

Se ha usado mucho dentro de la industria de


la seguridad de informacin
Python es un componente estndar

El Lenguaje Python

1.
2.
3.
4.
5.
6.

31

7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
a. Uso
b. Aplicaciones que
usan Python
Ejemplos
Bibliografa
Y para terminar

Entre otros famosos usuarios de Python


podemos encontrar

Varias organizaciones tambin hacen uso de


este lenguaje

El Lenguaje Python

1.
2.
3.
4.
5.
6.

32

7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
a. Uso
b. Aplicaciones que
usan Python
Ejemplos
Bibliografa
Y para terminar

Tambin lo podemos encontrar dentro de la


educacin
El Lenguaje Python

1.
2.
3.
4.
5.
6.

33

7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
a. Uso
b. Aplicaciones que
usan Python
Ejemplos
Bibliografa
Y para terminar

Se incluye en numerosos productos software


como lenguaje Script

El Lenguaje Python

1.
2.
3.
4.
5.
6.

34

7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
a. Uso
b. Aplicaciones que
usan Python
Ejemplos
Bibliografa
Y para terminar
El Lenguaje Python

1.
2.
3.
4.
5.
6.

35

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

A
B
C
D
El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

36

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

A
B
C
D
El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

37

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

A
B
C
D
El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

38

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

A
B
C
D
El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

39

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

A
B
C
D
El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

40

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

A
B
C
D
El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

41

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

1
2
3
4

5
6
7

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

8
42

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

1
9

2
4

1
8

5
7

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

9
43

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

1
9

2
4

1
8

5
7

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

9
44

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

1
9

2
4

1
8

5
7

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

9
45

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

1
9

3
3

2
4

1
8

5
7

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

46

1.
2.
3.
4.
5.
6.
7.
8.
9.

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

1. Mark Lutz. Learning Python. OReilly, 2007


2. Blas C. Ruiz, Francisco Gutierrez, Pablo
Guerrero, y Jos E. Gallardo. Razonando
con Haskell. Un curso sobre programacin
funcional. Thomson, 2004
3. Wikipedia:
Python
(programming
language), actualizado 05/2009[1]
4. Wikipedia: Python, actualizado 05/2009 [2]
5. Python v3.0.1 documentation, actualizado
05/2009[3]
6. Charming
Python:
Functional
programming in Python, Part 1, 2, and 3,
actualizado 06/2009[4] [5] [6]

El Lenguaje Python

47

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar
a. Experiencia
b. Conclusiones

1.
2.
3.

4.
5.
6.

Es un lenguaje agradable y de fcil


aprendizaje
Lenguaje en auge y bastante extendido
Al ser de cdigo abierto existe mucha
documentacin
El intrprete deja mucho que desear
Es fcil portar programas de otros
lenguajes a Python
La ltima versin no es completamente
compatible con las anteriores

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

48

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar
a. Experiencia
b. Conclusiones

Python es rpido
Extensible
Portable
Extensa librera estndar
Tipificado dinmico
Cdigo abierto
Python no es un lenguaje funcional puro
Compatibilidad entre versiones
Recursin limitada

No tiene comparacin de patrones


No utiliza evaluacin perezosa

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

49

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar
a. Experiencia
b. Conclusiones

Es mejor debido a que es ms fcil de


aprender y tiene un cdigo ms legible

Su cdigo es de 5 a 10 veces ms conciso y


dispone de tipificado dinmico

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

50

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar
a. Experiencia
b. Conclusiones

Al no disponer de comparacin de patrones


ni de evaluacin perezosa, sin duda alguna
para programacin funcional, Haskell es
mucho mejor que Python

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

51

Introduccin
Historia
Filosofa
Caractersticas
Python VS Haskell
Estado del lenguaje
Ejemplos
Bibliografa
Y para terminar

El Lenguaje Python

1.
2.
3.
4.
5.
6.
7.
8.
9.

52

Sergio Paque Martin


pakesoy@gmail.com
David Abolafia Caete
abolafia@gmail.com
5 de Ingeniera Informtica
(2008/2009)

Esta obra est bajo una licencia de Creative Commons.

Вам также может понравиться