57
Luiz Guilherme F. Aldabalde Luiz Guilherme F. Aldabalde Iniciando Iniciando no mundo do Python no mundo do Python Versão.: 12/05/11

Python Mini Ccurso Consegi2011

Embed Size (px)

DESCRIPTION

Palestras do mini-curso python oferecido em Brasilia no dia 11/05/2011 - Luiz Aldabalde.

Citation preview

Page 1: Python Mini Ccurso Consegi2011

Luiz Guilherme F. Aldabalde Luiz Guilherme F. Aldabalde

Iniciando Iniciando no mundo do Pythonno mundo do Python

Versão.: 12/05/11

Page 2: Python Mini Ccurso Consegi2011

ObjetivoObjetivo

Apresentar sua origem e o seu propósitoApresentar sua origem e o seu propósito Conhecer a sintaxe da linguagemConhecer a sintaxe da linguagem Elaborar os primeiros códigosElaborar os primeiros códigos Apresentar os módulos importantesApresentar os módulos importantes Indicar outras fontes de conhecimentoIndicar outras fontes de conhecimento

Page 3: Python Mini Ccurso Consegi2011

De onde venho ...De onde venho ...

Page 4: Python Mini Ccurso Consegi2011

4

Maior Provedor do Governo de tecnologia de Informações e Comunicações

Principais Clientes: Ministério da Fazenda, Planejamento, Justiça, Transportes, Comunicação, Educação e Gabinete Civil e Presidência.

Mais de 3 bilhões de Transações/ano

Múltiplas plataformas e padrões abertos

ASP + ISP + NSP

SERPROServiço Federal de Processamento de Dados

SERPROSERPRO

Page 5: Python Mini Ccurso Consegi2011

ComunidadesComunidades

Page 6: Python Mini Ccurso Consegi2011

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

Começou assim ...Começou assim ...

Page 7: Python Mini Ccurso Consegi2011

oioio 7

Porque Python ?Porque Python ?

Page 8: Python Mini Ccurso Consegi2011

1990 ­ Nascimento 1994 ­ Python ?? Que isso ? 1997 – Mas ninguém usa isso. 1999 – Onde podemos encontrar programadores? 2004 – Infoworld –  6a linguagem mais utilizada 2005 ­  Python na Nokia 2007 – A linguagem que mais cresceu (TIOBE) 2008 – Google App Engine 2009 – Melhor Linguagem Open Source              (Linux New Media Award – CEBIT 2009) 2010 ­ A linguagem que mais cresceu (TIOBE)

A evolução ...A evolução ...

Page 9: Python Mini Ccurso Consegi2011

oioio 9

Aplicações com PythonAplicações com Python

Encontramos o Python no : 

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

Page 10: Python Mini Ccurso Consegi2011

 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

Quem está usandoQuem está usando

Page 11: Python Mini Ccurso Consegi2011

Fator de sucessoFator de sucesso

Page 12: Python Mini Ccurso Consegi2011

Quem usa Python ?Quem usa Python ?

"Python realiza um papel chave no ciclo de produção. Sem ele um projeto do tamanho de Star Wars: Episode II seria complicado de ser realizado. Desde a renderização das multidões, passando pelo processamento em batch até a composição, Python junta todas estas coisas. Python está em todos os lugares na ILM. É usado para estender a capacidade de cada aplicação, da mesma forma promovendo uma cola entre elas. Cada Imagem de CG criada envolveu o uso de Python de alguma forma." disse o Tommy Burnette, Diretor Técnico da Industrial Light & Magic.

Page 13: Python Mini Ccurso Consegi2011

Quem usa Python ?Quem usa Python ?

“Nós escolhemos Python porque provê a máxima produtividade, código claro e fácil de manter, forte and extensível (e crescente !) bibliotecas, e excelente capacidade de integração com outras aplicações em qualquer plataforma.

Python atingiu ou excedeu todas as necessidades que nós tínhamos. " disse Steve Waterbury, Software Group Leader, NASA STEP Testbed.

''

Page 14: Python Mini Ccurso Consegi2011

oioio 14

Python substituiu o Scheme como linguagem introdutória em Engenharia e Ciência da computação no MIT.

“Principalmente por conta de suas bibliotecas que implementam interfaces para robótica” disse Gerald Jay Sussman um dos criadores do Scheme quando perguntado porque do Python no MIT.

Na universidadeNa universidade

Page 15: Python Mini Ccurso Consegi2011

Quem usa Python ?Quem usa Python ?

Page 16: Python Mini Ccurso Consegi2011

Quem usa Python ?Quem usa Python ?

“ O Serpro criou uma fábrica virtual para desenvolver portais para o governo federal. As ferramentas ZOPE e PLONE, foram selecionadas para o projeto, representaram uma economia inicial de R$ 10 milhões para a Empresa em custo de aquisição de softwares proprietários além de um aumento visível de produtividade.”Sérgio Borba Cangiano – Diretor do SERPRO à Revista Tema (2004)

Page 17: Python Mini Ccurso Consegi2011

TestemunhosTestemunhos

Eric Raymond

Autor: A Catedral e o Bazar

Mantenedor do Jargon File (Hacker's Dictionary)Contribuidor do GNU Emac, Linux, Fetchmail

Frases famosas: "Havendo olhos suficientes, todos os erros são óbvios"

“Entre todas as linguagens que aprendi, Python é a que menos interfere entre mim e o problema. É a mais efetiva para traduzir pensamentos em ações.”

O que Eric pensa do Python:

“Python amplifica seu cérebro.”

Page 18: Python Mini Ccurso Consegi2011

TestemunhosTestemunhos

Bruce Eckel

Autor de Best Sellers: “Thinking in C++” “Thinking in Java”

Autor de Best Sellers: “Thinking in C++” “Thinking in Java”

Frases Inspiradoras: ” Python: it fits your brain” “ Life is Better Without Braces” “ Life is short ! You need Python ! “ Python: Batteries Included”

Frases Inspiradoras: ” Python: it fits your brain” “ Life is Better Without Braces” “ Life is short ! You need Python ! “ Python: Batteries Included”

Palestra: Why I love Python “Python foi feito pra você “ “Python me ajuda a focar nos meus conceitos em vez de ficar brigando com a linguagem.” “Eu não preciso digitar muito. Mas o que eu digito é o certo “

Palestra: Why I love Python “Python foi feito pra você “ “Python me ajuda a focar nos meus conceitos em vez de ficar brigando com a linguagem.” “Eu não preciso digitar muito. Mas o que eu digito é o certo “

Page 19: Python Mini Ccurso Consegi2011

De quem é o Python ?De quem é o Python ?

Python Software Foundation

“The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.”

Page 20: Python Mini Ccurso Consegi2011

oioio 20

IntroduçãoIntrodução

Fácil Aprendizado (VHLL)Fácil Aprendizado (VHLL)

Fácil ManutençãoFácil Manutenção

Possui uma extensa biblioteca padrãoPossui uma extensa biblioteca padrão

Interpretada e interativaInterpretada e interativa

Possui uma poderosa estruturas de dados nativasPossui uma poderosa estruturas de dados nativas

Disponível com código aberto e livreDisponível com código aberto e livre

Interface para outras Linguagens ( Lua, Java, C) Interface para outras Linguagens ( Lua, Java, C)

Multi-plataformaMulti-plataforma

É um canivete-É um canivete-suíçosuíço !!! !!!

Page 21: Python Mini Ccurso Consegi2011

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)

MultiplataformaMultiplataforma

Page 22: Python Mini Ccurso Consegi2011

InterpretadoInterpretadoModo InterativoModo InterativoTipagem Dinâmica forteTipagem Dinâmica forteVery High-Level Language (VHLL)Very High-Level Language (VHLL)““Glue Language” - usada para integrar sistemas distintosGlue Language” - usada para integrar sistemas distintosGrande quantidade de bibliotecas de objetos Grande quantidade de bibliotecas de objetos Sintaxe estimula uma apresentação limpa do código Sintaxe estimula uma apresentação limpa do código Orientada a ObjetosOrientada a Objetos

CaracterísticasCaracterísticas

Page 23: Python Mini Ccurso Consegi2011

Código é mais vezes lido do que escrito !

Clareza na linguagem é fundamental para o aprendizado e para a manutenção do código.

Por que usar o Python ?Por que usar o Python ?

Page 24: Python Mini Ccurso Consegi2011

oioio 24

PYTHONPYTHON

SCRIPTSSCRIPTS

ESTRUTURADAESTRUTURADA

FUNCIONALFUNCIONAL

OOOO

Múltiplos ParadigmasMúltiplos Paradigmas

Page 25: Python Mini Ccurso Consegi2011

>> python  [opções] [nome­arquivo­python]

­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 interpretadorO interpretador

Page 26: Python Mini Ccurso Consegi2011

and

assert

break

class

continue

yield

def

finally

in

print

del

for

is

raise

elif

from

lambda

return

else

global

not

try

except

if

or

while

exec

import

pass

Palavras reservadasPalavras reservadas

29 palavras

Page 27: Python Mini Ccurso Consegi2011

 ­ 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 ...Começando ...

Page 28: Python Mini Ccurso Consegi2011

- 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 : {“DDD”: “21”, “Estado”:”RJ”}- Booleano : True ou False- Tipo Nulo : None

Tipos básicosTipos básicos

Page 29: Python Mini Ccurso Consegi2011

 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 FluxoControle de Fluxo

Page 30: Python Mini Ccurso Consegi2011

 Enquanto :

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

Controle Controle dede Fluxo Fluxo

Page 31: Python Mini Ccurso Consegi2011

Show me the code ...Show me the code ...

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

Page 32: Python Mini Ccurso Consegi2011

Show me the code ...Show me the code ...

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

Page 33: Python Mini Ccurso Consegi2011

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

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

FunçõesFunções

Page 34: Python Mini Ccurso Consegi2011

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

FunçõesFunções

Page 35: Python Mini Ccurso Consegi2011

 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)

FunçõesFunções

Page 36: Python Mini Ccurso Consegi2011

 Caso 4 - Função com quantidade de parâmetros variáveis: #entrada é uma tupla composta pelos valores passados

def func_soma(*entrada): c = 0 for i in entrada: c = c + i return c

total = func_soma(1,3) total = func_soma(2,3,4,5)

FunçõesFunções

Page 37: Python Mini Ccurso Consegi2011

  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 {chave=valor} print entrada return True total = func_trata(estado=”RJ”, cidade=”Vassouras”)   

FunçõesFunções

Page 38: Python Mini Ccurso Consegi2011

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

FunçõesFunções

Page 39: Python Mini Ccurso Consegi2011

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

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

Documentando Documentando

Page 40: Python Mini Ccurso Consegi2011

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

MódulosMódulos

Page 41: Python Mini Ccurso Consegi2011

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

MódulosMódulos

Page 42: Python Mini Ccurso Consegi2011

Definição : Capacidade da linguagem de identificar suas próprias estruturas internas, tais como tipos, escopo das variáveis, métodos e atributos.• dir( obj ) - apresenta os métodos associados ao objeto passado• type( obj ) - apresenta o tipo de um objeto.• help(obj ) - apresenta um resumo sobre o objeto documentado.

IntrospecçãoIntrospecção

Page 43: Python Mini Ccurso Consegi2011

O módulo __builtins__ contém as funções disponíveis por padrão quando se inicia o uso do Python. Temos : help, dir, type 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.]

__builtins____builtins__

Page 44: Python Mini Ccurso Consegi2011

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

Tratamento de ErrosTratamento de Erros

Page 45: Python Mini Ccurso Consegi2011

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

Buscando os errosBuscando os erros

Page 46: Python Mini Ccurso Consegi2011

Sintaxe básica :

class segunda(primeira): def __init__(self, p1, p2): self.nome = p1 Self.ano = p2 def hello(self): print “Hello, %s” % self.nomemeu_obj = segunda(“Luiz”, 40)meu_obj.hello()

Orientação a ObjetosOrientação a Objetos

Page 47: Python Mini Ccurso Consegi2011

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

Baterias IncluidasBaterias Incluidas

Page 48: Python Mini Ccurso Consegi2011

''''

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

Adicionando mais bateriasAdicionando mais baterias

Page 49: Python Mini Ccurso Consegi2011

Será que existem livros de Python?Será que existem livros de Python?

Page 50: Python Mini Ccurso Consegi2011

Dive into PythonMark Pilgrim

Livre pra download

Dive into PythonMark Pilgrim

Livre pra download

Aprendendo PythonDavid Ascher e

Mark Lutz

Aprendendo PythonDavid Ascher e

Mark Lutz

How to think like a computer scientist

Allen Downey, Jeff Elkner

and Chris Meyers Livre pra download

How to think like a computer scientist

Allen Downey, Jeff Elkner

and Chris Meyers Livre pra download

Python CookbookAlex Martelli,

Anna Ravenscroft eDavid Ascher

Python CookbookAlex Martelli,

Anna Ravenscroft eDavid Ascher

Dicas InportantesDicas Inportantes

Page 51: Python Mini Ccurso Consegi2011

Python para desenvolvedores Luiz Eduardo Borges

Livre para DownloadLicença Creative Commonshttp://ark4n.wordpress.com/

Livre para DownloadLicença Creative Commonshttp://ark4n.wordpress.com/

Referências LivresReferências Livres

Page 52: Python Mini Ccurso Consegi2011

Computação Científica com Python Flávio Coelho

http://www.lulu.com/content/616789http://www.lulu.com/content/616789

Referências a maisReferências a mais

Page 53: Python Mini Ccurso Consegi2011

www.python.orgwww.python.org

Page 54: Python Mini Ccurso Consegi2011

DocumentaçãoDocumentaçãoDocumentaçãoDocumentação

HowtosHowtosHowtosHowtos

CookBookCookBookCookBookCookBook

Muitos linksMuitos linksMuitos linksMuitos links

NotíciasNotíciasNotíciasNotícias

www.python.org.brwww.python.org.br

Page 55: Python Mini Ccurso Consegi2011

55

Python - python.org

PythonBrasil - www.python.org.br

PythonRio - www.pythonrio.org

APyB - associacao.pythonbrasil.org/

Lista PythonRio - br.groups.yahoo.com/group/pythonrio/

Lista PythonBrasil - br.groups.yahoo.com/group/python-brasil/

PyconBrasil 2009 - http://www.pythonbrasil.org.br/

Links Links

Page 56: Python Mini Ccurso Consegi2011

Alguma pergunta ?Alguma pergunta ?

Page 57: Python Mini Ccurso Consegi2011

Venha fazer parte desta comunidade

Luiz Guilherme F. AldabaldeLuiz Guilherme F. AldabaldeE-mail ; E-mail ; [email protected]@gmail.com [email protected]@serpro.gov.brTwitter : @aldabaldeTwitter : @aldabalde

Dedicado aDorneles Tremea