• Pesquisa Atualmente
Matemática
Graal do Desenvolvedor
• Qualidade • Extensibilidade
• Facilidade • Escalabilidade
• Legibilidade • Interoperabilidade
• Portabilidade • Customização
http://people.mandriva.com/~prigaux/language-study/diagram.png
Jonh Edson Ribeiro de Carvalho
Python com Baterias Incluídas
Quando?
• Criada em 1989 pelo holandês Guido
van Rossum no Centrum voor
Wiskunde en Informatica (CWI), em
Amsterdã,Holanda;
• Influenciada pela Linguagem ABC,
que focava em ser uma linguagem de
programação para usuários que não
eram programadores.
Jonh Edson Ribeiro de Carvalho
Python com Baterias Incluídas
Ambiente de Concepção
• Universidade - pessoas altamente
especializadas para desenvolver e
opinar sobre os elementos do projeto;
• Descontraído - o nome Python vem
da série de humor
Monty Python’s Flying Circus;
• Sem prazos, Sem pressão -
resultando em maior qualidade.
Jonh Edson Ribeiro de Carvalho
Python com Baterias Incluídas
O que é Python?
• Interpretada – facilita a portabilidade
• Interativa – facilita testes,
desenvolvimento rápido, protótipos;
• Orientada a Objetos – números,
strings, funções, instâncias, métodos...
O que é Python?
• Fortemente Tipada – não se mistura
tipos automagicamente;
• Tipagem Dinâmica – a tipagem de
objeto é feita em tempo de execução.
Um objeto tem tipo uma variável não.
Onde?
• Unix: HP-UX, Solaris, Linux
(freqüentemente pré-instalada), ...
• Mac OSX (sempre pré-instalada)
• Windows: 9x, Me, 2K, XP (ctypes,
win32all)
• Nokia Série 60
• PalmOS (Pippy)
Como?
• Não existem delimitadores de bloco
=> Identação (indenting)
• Suporta Threads, OO, herança
múltipla e tratamento de exceções
• Compilação implícita de bytecode
• Garbage collection
• Meta-informação e reflexão
computacional
Jonh
Jonh Edson
Edson Ribeiro
Ribeiro de
de Carvalho
Carvalho
Python com Baterias Incluídas
Interoperabilidade
• CPython - (onde existir um compilador C
ISO/IEC 9899:1990)
• Jython - (máquina virtual Java)
• IronPython - Python for .NET [Brian
Lloyd], (em desenvolvimento na M$)
• PyPy (Python implementado em Python)
• Python for Delphi
• LunaticPython (Lua)
• Nokia – Python for Series 60(S60)
class HelloWorldForm(Form):
def __init__(self):
self.Text = 'Hello World'
self.Name = 'Hello World'
form = HelloWorldForm()
Application.Run(form)
Casos
Casos no Brasil
• Embratel: monitoramento das interfaces de backbone e
Casos no Mundo
Industrial Light & Magic: automação interna: “Python
plays a key role in our production pipeline. Without it a
project the size of Star Wars: Episode II would have been very
Casos no Mundo
Apple: ferramenta padrão desde o MacOS X.
Disney: jogos e Sistemas internos de automação e criação,
patrocínio do PyQT.
400Mhz.
Casos no Mundo
Philips: automação da linha de semicondutores na fábrica de
Fishkill.
Histórias de Sucesso:
• http://www.python.org/about/success/
Jonh Edson Ribeiro de Carvalho
Python com Baterias Incluídas
grande erro.
Computação Gráfica
• Módulos
• PyOpenGL;
• PyGame (SDL);
• Pymedia;
• CGkit;
• PyODE;
• PyGPU (Processamento de Imagens na
GPU);
• Visual Python(Framework de Alto
Nível);
Computação Gráfica
• Programas Gráficos
• Blender
• Soya (Engine Jogos)
• Kyra (Engine Jogos)
• Games
• Civilization IV
• E muitos jogos usando como script de
Inteligência Artificial junto com Lua.
Jonh
Jonh Edson
Edson Ribeiro
Ribeiro de
de Carvalho
Carvalho
Python com Baterias Incluídas
Jonh
Jonh Edson
Edson Ribeiro
Ribeiro de
de Carvalho
Carvalho
Python com Baterias Incluídas
FrameWorks Web
• Zope / Plone
• Django
• Pylons
• TurboGears
Fazendo de Tudo
• Bancos de Dados: ODBC, mySQL,
Postgres, DCOracle,SQLServer, sqlite,
gadfly, ZODB, PyDO, Metakit
• Protocolos de Rede: asyncore,
htmllib, SimpleHTTPServer, urllib,
ftplib, poplib, smtplib, telnetlib, Twisted
• GUI: Tkinter, wxPython, PyGTk, PyQt,
PyKDE, Pythonwin
• Ciência: Numarray, SciPy, BioPython,
AstroPy, Py2R/SPlus
• Proc. Imagens: PIL, PythonMagick,
Gimp-python
Jonh
Jonh Edson
Edson Ribeiro
Ribeiro de
de Carvalho
Carvalho
Python com Baterias Incluídas
FrameWorks Web
• XML: PyXML, 4Suite, ElementTree,
RDFLib, Cwm
• Web: Webware, Cherrypy, Quixote,
PSP, mod_python, Nevow
• IDE: Emacs,vi, idle, SPE, Pythonwin,
Komodo, BlackAdder, PyScripter, Pida,
Eclipse(Pydev), Boa Constructor, Eric,
Gazpacho(Glade)
Jonh
Jonh Edson
Edson Ribeiro
Ribeiro de
de Carvalho
Carvalho
Python com Baterias Incluídas
Estrutura da Linguagem
•• Linha de Código e Indentação
P r e s e n ta tio n P o w e r P o in t .
• aP o =
w e r1P o in tP r e s e n t a tio n .
b = 2
if a < b:
print "a é menor "
else :
print "b é menor "
Estrutura da Linguagem
•• Literais
P r e s e n ta tio n P o w e r P o in t .
• • Strings
P o w e r P o in tP r e s e n t a tio n .
•Convencional: ’texto’ ou "texto"
•Multi-Line: ’’’texto várias linhas’’’ ou """texto várias
linhas"""
•Unicode: u’texto unicode’ ou u"texto", ...
•Raw: r’texto bruto\n’
•Strings em várias linhas são concatenadas.
Estrutura da Linguagem
•• Linha de Código e Indentação
P r e s e n ta tio n P o w e r P o in t .
• a
P o w=e r"texto"
P o in tP r e s e n t a tio n .
a = 123
a = [ 1 , 2 , 3 ]
b = [ a , "123" , 333 ]
d = { "chave": "valor" , "teste": a , "b" : 12345 }
Estrutura da Linguagem
•• Controle de Fluxo
P r e s e n ta tio n P o w e r P o in t .
Estrutura da Linguagem
•• Laços
P r e s e n ta tio n P o w e r P o in t .
• Pfor
o w e r Pfruta
o in tP r e s ein
n t a tio[n .
"Banana" , "Maça" , "Uva" ]:
print " Fruta :" , fruta
d = { "a":1 , "b":2 }
for chave , valor in d. iteritems ():
print "Chave:",chave, ",Valor:",valor
Estrutura da Linguagem
•• Funções
P r e s e n ta tio n P o w e r P o in t .
• Pdef
o w e r Pfatorial
o in tP r e s e n t a tio(n . numero ):
if numero <= 1:
return 1
else :
return ( numero * fatorial ( numero - 1 ) )
Estrutura da Linguagem
•• Classes
P r e s e n ta tio n P o w e r P o in t .
import datetime
• P o w e r P o in tP r e s e n t a tio n .
class Pessoa ( object ):
def __init__(self,nome,nasc):
self.nome = nome
self.nasc = nasc
def idade( self ):
delta=datetime.date.today()-self.nasc
return delta . days / 365
def __str__( self ):
return ’%s,%d anos’%(self.nome,self
.idade())
aluno=Pessoa( ’Aluno Teste’,
datetime.date (1972,7,19))
print aluno.idade()
print aluno
Estrutura da Linguagem
•• Listas
P r e s e n ta tio n P o w e r P o in t .
• Criação
• P o w e r P o in tP r e s e n t a tio n .
• Acesso
print lista [ 2 ] # imprime ’3 ’
Estrutura da Linguagem
•• Tuplas - Parecido com as listas, porém é
P r e s e n ta tio n P o w e r P o in t .
imutável: não se pode acrescentar, apagar ou
• modificar
P o w e r P o in tP r e s evalores.
n t a tio n .
Estrutura da Linguagem
•• Mapeamento
P r e s e n ta tio n P o w e r P o in t .
- Hash Tables
• Dicionários
• P o w e r P o in tP r e s e n t a tio n .
Zen of Python
Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Plano é melhor que aglomerado.
Esparso é melhor que denso.
Legibilidade faz diferença.
Casos especiais não são especiais o bastante
para quebrar as regras.
Embora a praticidade vença a pureza.
Erros nunca devem passar silenciosamente.
Zen of Python
A menos que sejam explicitamente silenciados.
Diante da ambigüidade, recuse a tentação de adivinhar.
Deve haver um -- e preferencialmente só um -- modo óbvio
para fazer algo.
Embora esse modo possa não ser óbvio à primeira vista a
menos que você seja holandês.
Agora é melhor que nunca.
Embora nunca freqüentemente seja melhor que
*exatamente* agora.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa
idéia.
Jonh Edson Ribeiro de Carvalho
Python com Baterias Incluídas
Comunidade Brasileira
•Site: Python Brasil
•www.pythonbrasil.com.br
•Email:
• python-brasil@yahoogrupos.com.br
•IRC:
• irc.freenode.org, canal #python-br
•Congresso:
•www.pyconbrasil.com.br
Referências Bibliográficas
• Python - www.python.org
• Python Brasil - www.pythonbrasil.com.br
• WiKiPedia - http://pt.wikipedia.org/wiki/Python
• Rodrigo Senra - www.rodrigo.senra.nom.br
• Gustavo Barbieri - www.gustavobarbieri.com.br
• CookBook -
•www.aspn.activestate.com/ASPN/Python/Cookbook/
• OnLamp - http://www.onlamp.com/python/
• Eggs - www.python-eggs.org/links.html