El lenguaje Python - Departamento Lenguajes y...

53
El lenguaje Python Programación Declarativa Avanzada Curso 2008- 2009

Transcript of El lenguaje Python - Departamento Lenguajes y...

Page 1: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

El lenguaje Python

Pro

gram

ació

n D

ecla

rati

va A

van

zad

a

Cu

rso

20

08

-20

09

Page 2: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Tipos de datos

b. Expresiones y control de flujo

c. Funciones

5. Python VS Haskell

a. Listas por compresión

b. Funciones sobre listas

c. Funciones λ (lambda) 2

El L

engu

aje

Pyth

on

Page 3: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

6. Esado del lenguaje

a. Uso

b. Aplicaciones que usan python

7. Ejemplos

8. Bibliografía

9. Y para terminar

a. Experiencia

b. Conclusiones

3

El L

engu

aje

Pyth

on

Page 4: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

Bloque 1

4

El L

engu

aje

Pyth

on

Page 5: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

5

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

óPodemos destacar

Es un lenguaje de programación de altonivel y de propósito general. El uso desangrías como delimitadores de bloques noes usual.

Python permite múltiples paradigmas deprogramación y contiene un completosistema de tipos dinámicos y gestión dememoria.

Tiene la misma filosofía que Linux. Y esgestionado por la organización PythonSoftware Foundation.

Page 6: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

6

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

¿Cuándo nació? ¿Qué ha pasadodesde entonces?

Fue concebido a finales de los años

80

Su antecesor fue el lenguaje ABC

Python se hizo público el 16 de octubre de2000

Actualmente la versión que tenemosdisponible es la de Python 3.0, publicada endiciembre de 2008

Page 7: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

7

El L

engu

aje

Pyth

on

í

Tiene una filosofía multi-paradigma

La programación orientada a objetos y laestructurada está completamente soportada

Incorpora ciertas funcionalidades quepermiten la programación FUNCIONAL yorientada a aspectos

Python es de tipificado dinámico y resolucióndinámica de nombres

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Page 8: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

8

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

í

Admite parcialmente la programaciónfuncional al estilo LISP

Existen varios módulos que implementanherramientas funcionales prestadas deHaskell y Standard ML

Rechaza las sintaxis exuberantes

Page 9: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

9

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

í

Zen de Python:

1. Bonito es mejor que feo

2. Simple es mejor que complejo

3. Plano es mejor que anidado

4. La legibilidad cuenta

5. Debería haber una manera (ypreferiblemente sólo una) obvia dehacerlo

6. Los namespaces son buena idea¡Hagamos más!

Page 10: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

Bloque 2

10

El L

engu

aje

Pyth

on

Page 11: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

11

El L

engu

aje

Pyth

on

íUn programa en Python puede ser descompuesto en módulos, sentencias, expresiones y objetos

Programa Módulos

Sentencias

Expresiones

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Page 12: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

12

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

íObjetivos y tipos de datos

En Python todo esta representado medianteobjetos o relaciones entre objetos

Cada objeto tiene una identidad, un tipo yun valor

Los objetos nunca son explícitamentedestruidos

Python usa el denominado “duck typing” ytiene objetos tipificados y variables notipificadas

Page 13: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

13

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

í

Si camina como un pato, nada como unpato y hace “quack” como un pato… Yodiría que es un pato

James Whitcomb Riley

Para esta función el objeto que recibe es unpato

Page 14: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

14

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

í

Page 15: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

15

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

íPython proporciona una serie de tipospredefinidos Tipo Clase Descripción

str String Secuencia inmutable

de caracteres

unicode String Versión Unicode de str

list Sequence Secuencia mutable de

objetos de tipo

arbitrario

tuple Sequence Secuencia inmutable

de objetos de tipo

arbitrario

set Set Conjunto mutable de

objetos sin orden de

tipo arbitrario

dict Mapping Grupo mutable de

pares clave-valor

int numbers.Integral Entero de magnitud no

definida, sólo limitada

por la memoria

disponible

float numbers.Real Números reales en

punto flotante de

doble precisión. Rango

de valores

dependiente de la

máquina

complex numbers.Complex Números complejos

representados

mediante un par de

números de punto

flotante.

bool numbers.Integral Valores de verdad

Page 16: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

16

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

íSentencia Rol Ejemplo

Asignación Creación de referencias a, b, c = 'good', 'bad', 'ugly'

Llamada Ejecución de funciones log.write("spam, ham\n")

print Impresión de objetos print 'The Killer', joke

If/elif/else Selectiva if "python" in text:

print text

for/else Iteración sobre una secuencia for x in mylist:

print x

while/else Bucle while X > Y:

print 'hello'

break, continue Salto en bucle while True:

if not line: break

pass Sentencia nula while True:

pass

assert Aserción assert x > y

try/except/finally Captura de excepciones try:

action( )

except:

print 'action error'

raise Lanzar excepciones raise endSearch, location

import, from Acceso a módulos import sys

from sys import stdin

def, return, yield Definición de funciones def f(a, b, c=1, *d):

return a+b+c+d[0]

def gen(n):

for i in n, yield i*2

class Definición de clases class subclass(Superclass):

staticData = []

global Declaraciones globales def function( ):

global x, y

x = 'new'

del Eliminación de referencias del data[k]

del data[i:j]

del obj.attr

del variable

with/as Creación de contextos with open('data') as myfile:

process(myfile)

Page 17: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

17

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

í

Son la estructura más básica queproporciona Python

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

[“Documentación”]<sentencias>

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

"""Return a list containing the Fibonacci series up to n."""result = []

a, b = 0, 1while b < n:

result.append(b)

a, b = b, a+breturn result

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

Page 18: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

18

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

í

Si se cierra el editor de Python y se vuelveabrir, las definiciones que existían se pierden

Debemos utilizar un editor, para poderdefinirlas y guardarlas (*.py)

Las definiciones de un módulo se puedenimportar hacia otros módulos o hacia elmódulo principal

Page 19: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

19

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

a. Objetos y tipos de datos

b. Sentencias

c. Funciones

d. Módulos

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

í

Python usa los espacios en blanco comoseparadores de bloques

Page 20: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

20

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Page 21: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

21

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Notación similar a la de conjuntos porcomprensión

Cada cualificador puede ser:

• Un generador,

• Una expresión booleana, o

• Una definición local

Page 22: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

22

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

La sintaxis difiere ligeramente de la deHaskell

El ejemplo anterior sería ahora de la forma

Page 23: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

23

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Aplica una función a todos los elementos dela lista, devolviendo una lista con losresultados

Page 24: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

24

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

El mismo ejemplo en versiones distintas 2.5.1y la 3.0

Page 25: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

25

El L

engu

aje

Pyth

on

Esta función nos permite seleccionar loselementos de una lista que cumplen ciertapropiedad

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Page 26: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

26

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

El predicado es la función que determina elcumplimiento de la condición y se devuelveun iterador sobre la secuencia de elementosque cumplen la condición

Page 27: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

27

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Para realizar operaciones de formaacumulativa

Page 28: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

28

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

El foldl1 realiza un plegado de las listas deizquierda a derecha

Page 29: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

29

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

En Python si disponemos de la funciónreduce como tal, se encuentra dentro delmódulo functools

Page 30: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

30

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

a. Listas por comprensión

b. Funciones sobre

listas

c. Operador Lambda

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

A veces necesitamos pequeñas funciones queactúen como predicados o que combinanelementos de alguna manera

Estas funciones se denominan anónimas olambda

Page 31: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

31

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

a. Uso

b. Aplicaciones que usan Python

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Se usa frecuentemente para aplicacionesweb, por ej. Servidor Apache

Servidores de aplicaciones como

Se ha usado mucho dentro de la industria dela seguridad de información

Python es un componente estándar

Page 32: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

32

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

a. Uso

b. Aplicaciones que usan Python

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Entre otros famosos usuarios de Pythonpodemos encontrar

Varias organizaciones también hacen uso deeste lenguaje

Page 33: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

33

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

a. Uso

b. Aplicaciones que usan Python

7. Ejemplos

8. Bibliografía

9. Y para terminar…

También lo podemos encontrar dentro de laeducación

Page 34: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

34

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

a. Uso

b. Aplicaciones que usan Python

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Se incluye en numerosos productos softwarecomo lenguaje Script

Page 35: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

35

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

a. Uso

b. Aplicaciones que usan Python

7. Ejemplos

8. Bibliografía

9. Y para terminar…

Page 36: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

36

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

1 2 3 4

A

B

C

D

Page 37: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

37

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

1 2 3 4

A

B

C

D

Page 38: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

38

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

1 2 3 4

A

B

C

D

Page 39: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

39

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

1 2 3 4

A

B

C

D

Page 40: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

40

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

1 2 3 4

A

B

C

D

Page 41: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

41

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

1 2 3 4

A

B

C

D

Page 42: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

42

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

A B C D E F G H

1

2

3

4

5

6

7

8

Page 43: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

43

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

5 3 7

6 1 9 5

9 8 6

8 6 3

4 8 3 1

7 2 6

6 2 8

4 1 9 5

8 7 9

Page 44: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

44

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

5 3 7

6 1 9 5

9 8 6

8 6 3

4 8 3 1

7 2 6

6 2 8

4 1 9 5

8 7 9

Page 45: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

45

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

5 3 7

6 1 9 5

9 8 6

8 6 3

4 8 3 1

7 2 6

6 2 8

4 1 9 5

8 7 9

Page 46: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

46

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

5 3 7

6 1 9 5

9 8 6

8 6 3

4 8 3 1

7 2 6

6 2 8

4 1 9 5

8 7 9

Page 47: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

47

El L

engu

aje

Pyth

on

í1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

1. Mark Lutz. Learning Python. O’Reilly, 2007

2. Blas C. Ruiz, Francisco Gutierrez, PabloGuerrero, y José E. Gallardo. Razonandocon Haskell. Un curso sobre programaciónfuncional. Thomson, 2004

3. Wikipedia: Python (programminglanguage), actualizado 05/2009[1]

4. Wikipedia: Python, actualizado 05/2009 [2]

5. Python v3.0.1 documentation, actualizado05/2009[3]

6. Charming Python: Functionalprogramming in Python, Part 1, 2, and 3,actualizado 06/2009[4] [5] [6]

Page 48: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

48

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

a. Experiencia

b. Conclusiones

1. Es un lenguaje agradable y de fácilaprendizaje

2. Lenguaje en auge y bastante extendido

3. Al ser de código abierto existe muchadocumentación

4. El intérprete deja mucho que desear

5. Es fácil portar programas de otroslenguajes a Python

6. La última versión no es completamentecompatible con las anteriores

Page 49: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

49

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

a. Experiencia

b. Conclusiones

Python es rápido

Python no es un lenguaje funcional puro

Compatibilidad entre versiones

Extensible

Portable

Código abierto

Tipificado dinámico

Extensa librería estándar

Recursión limitada

No tiene comparación de patrones

No utiliza evaluación perezosa

Page 50: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

50

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

a. Experiencia

b. Conclusiones Es mejor debido a que es más fácil deaprender y tiene un código más legible

Su código es de 5 a 10 veces más conciso ydispone de tipificado dinámico

Page 51: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

51

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…

a. Experiencia

b. Conclusiones

Al no disponer de comparación de patronesni de evaluación perezosa, sin duda algunapara programación funcional, Haskell esmucho mejor que Python

Page 52: El lenguaje Python - Departamento Lenguajes y …lcc.uma.es/~blas/apuntes/PDAv/T2008-2009/G3PythonPresent... · 2013-11-05 · La programación orientada a objetos y la estructuradaestá

52

El L

engu

aje

Pyth

on

1. Introducción

2. Historia

3. Filosofía

4. Características

5. Python VS Haskell

6. Estado del lenguaje

7. Ejemplos

8. Bibliografía

9. Y para terminar…