python mini curso v0812

44
Luiz Guilherme F. Aldabalde Iniciando o uso do Python Versão.: 10/12/08

Upload: luiz-aldabalde

Post on 18-Dec-2014

1.662 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Python Mini Curso V0812

Luiz Guilherme F. Aldabalde

Iniciando o uso do Python

Versão.: 10/12/08

Page 2: Python Mini Curso V0812

Iniciando o uso do Python

Conteúdo

● Introdução● Tipos Básicos● Funções Builtins● Instrospecção● Criando Funções● PyDoc● Tratamento de Erros● Baterias● Fontes

Page 3: Python Mini Curso V0812

Introdução

Objetivos 

● Apresentar sua origem e o seu propósito● Conhecer a sintaxe da linguagem● Elaborar os primeiros códigos● Apresentar os módulos mais importantes● Indicar outras fontes de conhecimento

Page 4: Python Mini Curso V0812

Introdução

Page 5: Python Mini Curso V0812

Introdução

HistóricoPython foi criada em 1990 por Guido Van Rossum. O nome da linguagem é uma homenagem ao grupo inglês de humor Monty Python.  Segundo Guido a linguagem foi concebida para ocupar o espaço que existia entre as linguagens C/C++ e o shell.

Page 6: Python Mini Curso V0812

Introdução

Evolução da espécie :● 1990 ­ Nascimento● 1994 ­ Python ?? Que isso ?● 1997 – Mas ninguém usa isso.● 1999 – Onde podemos encontrar programadores?● 2004 – Infoworld –  6a   linguagem ● 2005 ­  Python na Nokia● 2007 – A linguagem que mais cresceu (TIOBE)● 2008 – Google App Engine

Page 7: Python Mini Curso V0812

Introdução

Encontramos o Python  :

● Blender, Maya● OpenOffice ● Zope/Plone ● BitTorrent ● MoinMoin ● Mailman ● Chandler ● Gimp ● Gnumeric ● Anaconda, Portage, Yum● Trac

Page 8: Python Mini Curso V0812

Introdução

Quem usa ?? ● Nasa, United Space Alliance ● Google, Yahoo , YouTube● Nokia, Nortel ● RedHat, Gentoo ● Apple ● Disney ● Philips  ● Los Alamos National Laboratory ● ILM ­ Industrial Ligth & Magic● SERPRO, PETROBRAS ● Interlegis

Page 9: Python Mini Curso V0812

Introdução

 Por que usar Python ?

● Fácil Aprendizado ● Fácil Manutenção● Possui uma extensa Biblioteca Padrão● Possui uma poderosa Estruturas de Dados Nativas● Disponível com código aberto e livre● Interface para outras Linguagens ( Lua, Java, C) ● Multi­plataforma● É um canivete­suíço !!!

Page 10: Python Mini Curso V0812

Introdução

Presente nos Sistemas Operacionais:● Windows: 9x, Me, 2K, XP● Unix: HP­UX, Solaris (freqüentemente pré­instalada)● Linux (freqüentemente pré­instalada)● MacOs X (sempre pré­instalada)● Nokia Série 60 

Através de Interpretadores :● CPython ● Jython (máquina virtual Java)● IronPython .NET (em desenvolvimento na Microsoft)

Page 11: Python Mini Curso V0812

Características Básicas

● Interpretado● Possui modo Interativo● Possui Tipagem Dinâmica forte● Linguagem de Muito Alto nível ­ Very High­Level Language (VHLL)● “Glue Language” ­ usada para integrar sistemas distintos● Possui uma grande quantidade de bibliotecas de objetos ● Sua sintaxe facilita uma apresentação limpa do código ● Orientada a Objetos, mas permite trabalhar com outros paradigmas

Primeiras definições : 

Page 12: Python Mini Curso V0812

Características Básicas

Múltiplos paradigmas :

PYTHONPYTHON

SCRIPTSSCRIPTS

ESTRUTURADAESTRUTURADA

FUNCIONALFUNCIONAL

OOOO

Page 13: Python Mini Curso V0812

Características Básicas

python {opções} [­c comando | ­m módulo | arquivo] {parâmetros}

­c cmd : programa passado como string (cmd) na linha de comando­h : mensagem de ajuda­i  : executa programa e "cai" no prompt interativo­O : ativa otimizações­OO  :  mesmo  que  ­O,  incluindo  remoção  de  docstrings  (documentação  on­line)­t : avisa sobre inconsistências na tabulação­v : importação verborrágica­V : imprime número de versão

O Interpretador: 

Page 14: Python Mini Curso V0812

Características Básicas

and assert break class continue yielddef finally in print   

delforis raiseeliffromlambdareturnelse global 

nottryexceptiforwhileexecimportpass

Palavras reservadas [29] : 

Page 15: Python Mini Curso V0812

Características Básicas

● Cada linha termina com ponto e vírgula (;) ou com um <enter >● Cada bloco de instruções é definido pela identação  ● Comentário em uma linha é definido pelo símbolo tralha (#)● Comentário em mais e uma linha podemos usar aspas triplas para começar e terminar (“”” texto comentado “””)● Multi linha com o uso de barra invertida (\)● Uma variável não é declarada, ela assume o tipo quando associada com um valor

Começando  ... 

Page 16: Python Mini Curso V0812

A Linguagem

● Numérico : Decimal,  Hexa (0x1a),  long 1.0l, float – 1.0 ou 1.0e­3,    complexo 1.0j● Strings : “oi”, 'oi', ”””oi 'dentro' de outra”””● Tuplas : (1, “a”, 3.0)● Listas : [1,2,3,4]● Dicionários : {“Nome”: “Ronaldo”, “Time”:”Barcelona”}● Booleano : True ou False● Tipo Nulo : None 

Tipos de dados básicos : 

Page 17: Python Mini Curso V0812

a = 1            # Decimal Inteirob = 0x12      # Hexadecimal Inteiroc = 1.0         # Floatd = 1.34e­3  # Floate = "Laranja"f = "Laranja e 'orange'"h = 'Laranja'lista_frutas = ["laranja", "banana", "pera"]tupla_frutas = ("laranja", "banana", "pera") dic_hortifruti = {"fruta":"laranja", "verdura": "alface"}

Exemplo de Tipos de dados básicos  : 

A Linguagem

Page 18: Python Mini Curso V0812

● Condicional :planetas = ["Marte", "Terra", "Venus", "Plutao", "Saturno", "Jupiter"]

if type(planetas) is list:    print "Tenho uma Lista"

● Loop :for i in xrange(10):    print i

Controle de Fluxo: 

A Linguagem

Page 19: Python Mini Curso V0812

● Enquanto :planetas = ["Marte", "Terra", "Venus", "Plutao", "Saturno", "Jupiter"]conta = 0while planetas[conta] <> "Saturno":    print planetas[conta]    conta = conta + 1

Controle de Fluxo: 

A Linguagem

Page 20: Python Mini Curso V0812

● Tratando com texto     a = “Hoje vai fazer sol “    pos = a.find(“vai)    novo_a = a[1:1]    outro_a = a[1:­1]    a_maiusculo = a.upper()    d = dict(zip([“um”, “dois”, “tres”], [1,2,3]))

Agora um pouco de diversão : 

A Linguagem

Page 21: Python Mini Curso V0812

● Alguns truques :    x,y = y,x # Exemplo de swap     list comprehension : resultado = [x for x in xrange(50) if  x%3 ==0]

A diversão continua ... 

A Linguagem

Page 22: Python Mini Curso V0812

Uma função pode retornar um ou mais objetos.Quanto aos parâmetros de entrada, podemos ter 5 tipos de funções  :

● Caso 1­ Função simples :    def func_simples():        print “oi”        return True        func_simples()

Usando Funções  :

A Linguagem

Page 23: Python Mini Curso V0812

● Caso 2 ­ Função com parâmetros definidos:      def func_soma(a, b):        c =  a + b        return c        total = func_soma(1,3)

Usando Funções (continuação)  :

A Linguagem

Page 24: Python Mini Curso V0812

● Caso 3 ­ Função com parâmetros definidos, mas valores defaults:      def func_soma(a, b=2):        c =  a + b        return c        total = func_soma(1,3)    total = func_soma(2)

Usando Funções (continuação)   :

A Linguagem

Page 25: Python Mini Curso V0812

● Caso 4 ­ Função com quantidade de parâmetros variáveis:      def func_soma(*entrada):        # entrada é uma tupla com todas as variáveis passadas        c = 0        for i in entrada:             c =  c + i         return c        total = func_soma(1,3)    total = func_soma(2,3,4,5)

Usando Funções  (continuação) :

A Linguagem

Page 26: Python Mini Curso V0812

 Caso 5 ­ Função com quantidade de parâmetros variáveis, mas nome de variáveis associadas:      def func_trata(**entrada):        # entrada é um dicionário formado pelo par chave=valor        print entrada        return True        total = func_trata(nome=”Ronaldo”, time=”Real Madri”)   

Usando Funções  (continuação) :

A Linguagem

Page 27: Python Mini Curso V0812

Podemos  usar  uma  função  como  uma  variável  dentro  de  um dicionário.  Desta  forma  podemos  escolher  entre  várias  opções  de maneira muito simples :

    def func_um():        print “um”    def func_dois():       print “dois”    lista_funcoes = {“um”: func_um, “dois”: func_dois}    lista_funcoes[“um”]()

Outra formas de chamar uma função :

A Linguagem

Page 28: Python Mini Curso V0812

       def  fun_um(): “””               Descrição da função fun_um() “”” return

● No modo interativo :  help(fun_um)● Com um browser : Pydoc ­p 123

Documentando o seu código : 

A Linguagem

Page 29: Python Mini Curso V0812

Para permitir a chamada de outras funções, classes temos os seguintes comandos :

    import nome_módulo    from nome_módulo import  *     from nome_módulo import nome_func    from nome_módulo import nome_func as alias_func

Usando Módulos : 

A Linguagem

Page 30: Python Mini Curso V0812

Para permitir que um módulo importado não execute as rotinas que estejam fora de uma função utilizamos o seguinte recursos :    if __name__ == '__main__':        print “oi” Para definir um diretório como um conjunto de arquivos que serão importados basta colocar um arquivo (vazio) com este nome :      __init__.py

Algo mais sobre Módulos : 

A Linguagem

Page 31: Python Mini Curso V0812

● No modo interativo usamos o dir() para realizar esta função     import os      dir(os)

● Permite a integração com IDEs para a geração de ajuda● Usado para conhecer os módulos e métodos de um objeto que estão disponíveis.

 Introspecção ­ pesquisando os módulos: 

A Linguagem

Page 32: Python Mini Curso V0812

● type() ­ apresenta o tipo de uma variável.● locals() ­ apresenta as variáveis presentes no escopo local.● globals() ­ ­ apresenta as variáveis presentes no escopo global.

Definição : Capacidade da linguagem de identificar suas próprias estruturas internas, tais como tipos, escopo das variáveis, métodos e atributos.

 Introspecção, de modo mais geral : 

A Linguagem

Page 33: Python Mini Curso V0812

Conhecendo o __builtins__: 

O módulo __builtins__ contém as funções disponíveis por padrão quando se inicia o uso do Python. Temos :

● help● tuple, int, list, dict, float, long● chr, ord● len, sum, min, max, pow● xrange● open● Códigos de Erro● reduce, map, filter● raw_input● ... [ use o dir(__builtins__) para pesquisar mais módulos.]

A Linguagem

Page 34: Python Mini Curso V0812

Tratamento de Exceções

try:   <comandos>except expressão ,variável:   <comandos se houve exceções>else:   <comandos se não houve exceções>

Controlando o erro através do try/except: 

Page 35: Python Mini Curso V0812

Debug - Encontrando os erros

Debug :Usando o pdb para inserir um “breakpoint” no seu código:    import pdb; pdb.set_trace()Uma vez no modo interativo você pode verificar todas as variáveis, e usar os seguintes comandos :    n – next, vai para a próxima linha    s  ­ step into, entra em uma sub­função ( se existir)    b xx – define um novo breakpoint  na linha xx    c – continue    l ­ list    h – chama o help

Usando um “debugger” : 

Page 36: Python Mini Curso V0812

class segunda(primeira):    def __init__(self):         print “oi”            def hello_2(self):        print “Hello second world”

Uma classe ... : 

Usando Orientação a Objetos

Page 37: Python Mini Curso V0812

Baterias Incluídas

Page 38: Python Mini Curso V0812

Vários módulos estão disponíveis, entre eles temos  :

●   SO: os, sys, shutils●  Dados: csv, pickle, shelve, zipfile●  Rede: email, ftplib, urllib2, urlparse, SimpleHttpServer●  Ferramentas Gerais : datetime, numeric, time, re,md5

Bibliotecas que fazem a diferença  : 

Baterias Incluídas

Page 39: Python Mini Curso V0812

Bancos de Dados : ODBC, MySQL, Postgres, Oracle, SQLServer, sqlite, gadfly, ZODB/Durus

Rede : Twisted, asyncore, htmllib, SimpleHTTPServer, urllib, ftplib, poplib, smtplib, telnetlib

GUI : Tkinter, wxPython, PyGTk, PyQt, PyKDE, Pythonwin

Ciência : NumPY, SciPy, BioPython, MatPlotLIb

XML : PyXML, 4Suite, ElementTree, RDFLib, Cwm

Web : ZOPE, CherryPy, Webware, Quixote, PSP, mod_python, Nevow, Django, TurboGears, Pylons

Processamento. de Imagens : PIL, PythonMagick, Gimp-python

Mais Energia para as Baterias

Page 40: Python Mini Curso V0812

Referências

­ Python in a Nutshell – Alex Martelli – O'Reilly­ Python Cookbook – Alex Martelli e David Ascher  ­ O'Reilly­ Dive Into Python – Mark Pilgrim (http://www.diveintopython.org/ )­ Aprendendo Python ­ Mark Lutz e David Ascher

Livros : 

Page 41: Python Mini Curso V0812

­ Site oficial : www.python.org- Site oficial no Brasil : www.pythonbrasil.com.br- Manual Referência : http://docs.python.org/ref/ref.html- Tutorial ( Português) : http://www.python.org/doc/current/tut/tut.html

Alguns endereços  : 

Referências

Page 42: Python Mini Curso V0812

­ Wiki SL­RJ : wiki.softwarelivre.org/SLRJ/WebHome- Lista SL-RJ : groups.google.com/group/slrj- Lista PythonRio : br.groups.yahoo.com/group/pythonrio/- Site SERPRO : www.serpro.gov.br

Mais alguns endereços  : 

Referências

Page 43: Python Mini Curso V0812

FIM, alguma pergunta ??

Page 44: Python Mini Curso V0812

OBRIGADO

Luiz Guilherme F. AldabaldeLuiz Guilherme F. [email protected]@gmail.com