este sssssss

62
Fco Javier Lucena Lucena

Upload: lcpvluiscarlos2

Post on 28-Sep-2015

244 views

Category:

Documents


4 download

DESCRIPTION

documentado es privado

TRANSCRIPT

  • Fco Javier Lucena Lucena

  • ndice Introduccin Propiedades Why use it ? Instalacin

    Sintaxis Ejemplos

  • http://xkcd.com/

  • 4Introduccin

    Python es un lenguaje de programacin dinmica muy poderoso.

    Creado por Guido Van Rossum en 1991

    Comparado con Tcl, Perl, Ruby, Scheme o Java

  • 5PropiedadesInterpretado o de script

    Flexibilidad y PortabilidadFcil de depurarReduce el tamao del programa

  • 6PropiedadesTipado 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.

  • 7PropiedadesFuertemente 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

  • 8Why use it?

    Es un lenguaje limpio, tiene una sintaxis legible.

    Lenguaje muy parecido al pseudocdigo

    Recomendado para empezar a programar.

  • 9Why use it?

    Python is Open !!

    UsarDistribuirIncluso uso comercialPython Software Foundation

    Licencia Python 2.6.2

  • 10

    Why use it?Powerful and fast

    Se puede resolver un problema en cualquier mbito.

    La biblioteca estndar lleva pilas incluidasMdulos, paquetes, frameworks

    Compilador de byte muy optimizado*.pyc (bitecode)

  • 11

    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 aprenderAmplia y buena documentacin en lnea.

  • 12

    AplicacionesDesarrollo Web e InternetBases de DatosDesarrollo SoftwareJuegos y Grficos 3DBioinformaticaFsicaEducacin

    http://www.python.org/about/apps/http://pypi.python.org/pypi

  • 13

    Casos de xito

  • 14

    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)

  • 15

    Instalacinhttp://www.python.org/download/Disponible en la mayora de distribuciones Gnu/Linux

    sudo apt-get install ipython / bpythonhttp://ipython.scipy.org/moin/Autocompletado (In[1] : pr + Tab)Operador ? (Ayuda mtodos)

    sudo apt-get install geany

  • 16

    HerramientasIDE

    Eclipse con el plugin pyDev, Aptana, NetBeans, Geany, pyScripter, Ninja IDE, Stani's Python Editor, Wingware Python IDE, Komodo, Pyragua, Eric

    EditorEditra, emacs, Notepad++, SciTE

    ShellIpython, PyCrust, PyShell

    http://wiki.python.org/moin/PythonEditors.

  • 17

    InstalacinInterprete Interactivo

    Desde consola ejecutamos python o ipython

    Control + dControl + z

  • 18

    Filosofa PythonImport 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

  • 19

    InstalacinScript

    Ejecutar un fichero desde la linea de comandosExtensin ----> mi_fichero.py Shebang ----> #!/usr/bin/python# -*- coding: utf-8 -*- Unicodepython hola.py [ ./hola.py (chmod +x) ]

    #!/usr/bin/python

    printMensajeenviadoprintPulsaunatecla

    raw_input()

  • Por qu empece a programar en Python ?

  • 21

    SintaxisSe distinguen Maysculas minsculasNo se necesita carcter para indicar el fin de una sentencia. ({})Los bloques son especificados por indentacin# Esta lnea es un comentarioVar = 3 # Asignacin con el carcter =Var == Var1 # Operador igualdadVar -= 1 # Para incrementar Var += 1

  • 22

    Tipos de Datos

    Nmeros : entero, flotante, complejoCadenas de TextoValores Booleanos

    3 , 4.57, 2 + 3jHola MundoTrue - False

    Saber el tipo de dato que contiene una variable: type(id_variable)

  • 23

    Variableslos identificadores, palabras clave... en Python son case-sensitive, distinguen entre maysculas y minsculas.No es necesario declarar las variables

    Al utilizarlas se declaran automticamenteAsignacin Mltiple en una lnea

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

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

  • 24

    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 Truelista[inicio:fin]

    Lista[1:] #desde 1 a finLsita [:2] # desde inicio a 2

  • 25

    ColeccionesTupla

    Declaracin: tupla = {1, True, hola}Acceso: tupla[indice]

    InmutablesSus valores no se pueden modificarTamao fijo

    Mas ligeras que las listasConsumen menos memoria

  • 26

    Cadena de Texto

    cadena = Que risa me da C

    cadena[4] # devuelve r

    cadena[:3] # devuelve Que

  • 27

    ColeccionesDiccionario

    Relacionan una clave y un valor

    Acceso: dicc[clave]

    Dicc = {75934029J : Lopez Lopez Jose, 64790681H : Perez Pepito}

  • 28

    Estructuras de ControlCondicional>>>x=int(raw_input("Introduceunnmeroentero:"))>>>ifx

  • 29

    Estructuras de ControlSentencia for

    No hay valor inicial, ni condicin de parada, ni un incremento.Iterar por los elementos de una secuenciaforeach en OO PHP>>>#Mediralgunascadenas:...a=[gato,ventana,defenestrar]>>>forxina:...printx,len(x)...gato4ventana7defenestrar11

  • 30

    Estructura de control

  • 31

    Estructura de controlFuncin range()>>>a=[Cinco,lobitos,tiene,la,loba]>>>foriinrange(len(a)):...printi,a[i]...0Cinco1lobitos2tiene3la4loba

  • 32

    Estructuras de Control

    while

    numero=23detener=False

    whilenotdetener:adivina=int(raw_input('Unentero:'))

    ifadivina==numero:print'Enhorabuena,hasacertado!.'detener=True#Estocausaqueel#buclesedetengaelifadivina

  • 33

    Funciones

    >>>deffib(n):#escribirlaserieFibonaccihastan......a,b=0,1...whileb>>#Yahorallamamosalafuncinrecindefinida:...fib(2000)11235813213455891442333776109871597

    Palabra reservada return

  • 34

    FuncionesDocumentar

    def mi_funcion(param1, param2): """Esta funcin imprime los dos valores pasados como parmetros""" print param1 print param2

  • 35

    Funciones

    Devolver Valores

    deff(x,y):returnx*2,y*2

    a,b=f(1,2)

  • 36

    FuncionesParmetros por defecto Parmetros Extra (tupla)

    defvarios(param1,param2,*otros):forvalinotros:printotros

    varios(1,2)varios(1,2,3)varios(1,2,3,4)

  • 37

    Funciones lambdaCrear funciones annimas en lnea

    l=[1,2,3]l2=filter(lambdan:n%2.0==0,l)

    defes_par(n):return(n%2.0==0)l=[1,2,3]l2=filter(es_par,l)

  • 38

    MdulosFichero que contiene definiciones y sentencias.El nombre del fichero es el nombre del modulo sin la extensin .pyPalabra reservada import - from

    #!/usr/bin/pythonimport nombre_modulonombre_modulo.funcion()import nombre_modulo from mi_funcionmi_funcion()....

  • 39

    MdulosDavid 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.

  • 40

    Mdulos

    Hay una gran variedad de mdulos

    Antes de implementar, busca !Probablemente esta ya hecho.

    Hay mdulos matemticos, web, programacin evolutiva, inteligencia artificial

  • 41

    Mdulos

    Donde estn?

    Variable de entorno: PYTHONPATH>>> import sys>>> sys.path

  • 42

    Mdulosadministrar la instalacin de todos estos paquetes existe pipPara instalar:sudo apt-get install python-pip python-dev build-essential

    sudo pip install --upgrade pip

    paquetes instalados y disponibles

    sudo pip install yolk

    yolk -l yolk -l | grep yolk

  • 43

    Paquetes

    Sirven para organizar los mdulosPara hacer que Python trate a un directorio como un paquete es necesario crear un archivo __init__.py

    import paq.subpaq.modulopaq.subpaq.modulo.func()

    http://pypi.python.org/pypi

  • 44

    Paquetes

    Sonido/ __init__.py Formatos/ __init__.py leerwav.py escriwav.py leeraiff.py escriaiff.py

  • 45

    Clases

    Sintaxis mnima y nueva Semntica

    classnombreClase:...

  • 46

    Clases

    MiClase, adems de definir la clase, es unobjeto en s mismo.MiClase.i y MiClase.f son referencias aatributos vlidas, que devuelven un enteroy un objeto mtodo, respectivamente

    classMiClase:"Simpleclasedeejemplo"i=12345deff(self):returnhola,mundo

  • 47

    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__

  • 48

    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)

  • 49

    ClasesclassMiClase:"Simpleclasedeejemplo"i=12345deff(self):returnhola,mundo

    X=MiClase()

    x.contador=1whilex.contador

  • 50

    Clases

    classBolsa:def__init__(self):self.datos=[]defagregar(self,x):self.datos.append(x)defagregarDosVeces(self,x):self.agregar(x)self.agregar(x)

    Mtodo de claseMtodo de instancia

  • 51

    ClasesHerencia

  • 52

    Biblioteca EstndarSistema operativo

    >>>importos>>>dir(os)

    >>>help(os)

    >>>os.getcwd()/home/fran

  • 53

    Biblioteca EstndarArgumentos linea ordenes

    python demo.py un dos tres>>> import sys>>> print sys.argv[demo.py, un, dos, tres]

  • 54

    Biblioteca Estndar

    import reimport mathimport urllib2import ramdomimport datetimeimport threadingimport logging

  • 55

    Ejemplo

  • 56

    Ejemplo

  • 57

    Ejemplo

  • 58

    Ejemplo

  • 59

    Ejemplo

    Video Wii Motion + Python + Linux

  • 60

    Encuesta

    http://go4.es/0akl

  • 61

    Fuentes

    Python para todosRal Gonzalez Duque

    Aprenda a Pensar Como un Programador con Python

    Allen Downey Jeffrey Elkner Chris Meyers

  • Licencia

    Fco Javier Lucena Lucena

    [email protected]

    @frannlu

    Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16Pgina 17Pgina 18Pgina 19Pgina 20Pgina 21Pgina 22Pgina 23Pgina 24Pgina 25Pgina 26Pgina 27Pgina 28Pgina 29Pgina 30Pgina 31Pgina 32Pgina 33Pgina 34Pgina 35Pgina 36Pgina 37Pgina 38Pgina 39Pgina 40Pgina 41Pgina 42Pgina 43Pgina 44Pgina 45Pgina 46Pgina 47Pgina 48Pgina 49Pgina 50Pgina 51Pgina 52Pgina 53Pgina 54Pgina 55Pgina 56Pgina 57Pgina 58Pgina 59Pgina 60Pgina 61Pgina 62