Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Paradigma
Multiparadigma:
Orientao a objetos
Programao imperativa
Programao funcional
Surgido em
19911
ltimaverso
Criado por
Influenciada por
Influenciou
Pgina oficial
www.python.org
Python uma linguagem de programao de alto
nvel4 , interpretada, imperativa, orientada a objetos, funcional,
de tipagemdinmica e forte. Foi lanada por Guido van
Rossum em 1991.1 Atualmente possui um modelo de desenvolvimento
comunitrio, aberto e gerenciado pela organizao sem fins lucrativos Python
Software Foundation. Apesar de vrias partes da linguagem possurem padres
e especificaes formais, a linguagem como um todo no formalmente
especificada. O padro de facto a implementao CPython.
A linguagem foi projetada com a filosofia de enfatizar a importncia do esforo
do programador sobre o esforo computacional. Prioriza a legibilidade do
cdigo sobre a velocidade ou expressividade. Combina uma sintaxe concisa e
clara com os recursos poderosos de sua biblioteca padro e
por mdulos e frameworks desenvolvidos por terceiros.
O nome Python teve a sua origem no grupo humorstico britnico Monty
Python,5 criador do programa Monty Python's Flying Circus, embora muitas
ndice
[esconder]
1 Histria
2 Filosofia
3 Caractersticas
3.1 Construes
3.2 Tipos de dado
3.3 Palavras reservadas
3.4 Operadores
3.5 Interpretador interativo
3.6 Anlise lxica
3.6.1 Indentao
3.7 Compilador de bytecode
3.8 Polimorfismo
3.9 Orientao a objetos
3.10 Programao funcional
3.11 Tratamento de excees
3.12 Biblioteca padro
3.13 Comentrios
4 Plataformas disponveis
5 Implementaes
6 Desenvolvimento
7 Licena
8 Mdulos e frameworks
8.1 Interfaces grficas
9 Ambientes de desenvolvimento integrado
10 Aplicaes
11 Referncias
12 Bibliografia
13 Ligaes externas
Python foi concebido no final de 19894 5 por Guido van Rossum no Instituto de
Pesquisa Nacional para Matemtica e Cincia da Computao (CWI), nos Pases
Baixos, como um sucessor da ABC capaz de tratar excees e prover interface
com o sistema operacional Amoeba6 atravs de scripts. Tambm da CWI, a
linguagem ABC era mais produtiva que C, ainda que com o custo do
desempenho em tempo de execuo. Mas ela no possua funcionalidades
importantes para a interao com o sistema operacional, uma necessidade do
grupo. Um dos focos primordiais de Python era aumentar a produtividade do
programador.5
Em 1991, Guido publicou o cdigo (nomeado verso 0.9.0) no grupo de
discusso alt.sources.1 Nessa verso j estavam
presentes classes com herana, tratamento de excees, funes e os tipos de
dado nativos list , dict , str , e assim por diante. Tambm estava presente
nessa verso um sistema de mdulos emprestado do Modula-3. O modelo de
excees tambm lembrava muito o do Modula-3, com a adio da
opo else clause.6 Em 1994 foi formado o principal frum de discusso do
Python, comp.lang.python, um marco para o crescimento da base de usurios
da linguagem.
A verso 1.0 foi lanada em janeiro de 1994. Novas funcionalidades incluam
ferramentas para programao
funcional como lambda , map , filter e reduce . A ltima verso enquanto
Guido estava na CWI foi o Python 1.2. Em 1995, ele continuou o trabalho no
CNRI em Reston, Estados Unidos, de onde lanou diversas verses. Na verso
1.4 a linguagem ganhou parmetros nomeados (a capacidade de passar
parmetro pelo nome e no pela posio na lista de parmetros) e suporte
nativo a nmeros complexos, assim como uma forma de encapsulamento.7
Ainda na CNRI, Guido lanou a iniciativa Computer Programming for
Everybody (CP4E; literalmente, "Programao de Computadores para Todos"),
que visava tornar aprogramao mais acessvel, um projeto financiado
pela DARPA.8 Atualmente o CP4E encontra-se inativo.
Em 2000, o time de desenvolvimento da linguagem se mudou para a BeOpen a
fim de formar o time PythonLabs. A CNRI pediu que a verso 1.6 fosse lanada,
para marcar o fim de desenvolvimento da linguagem naquele local. O nico
lanamento na BeOpen foi o Python 2.0, e aps o lanamento o grupo de
desenvolvedores da PythonLabs agrupou-se na Digital Creations.
Python 2.0 implementou list comprehension, uma relevante funcionalidade de
linguagens funcionais como SETL e Haskell. A sintaxe da linguagem para essa
construo bastante similar a de Haskell, exceto pela preferncia do Haskell
por caracteres de pontuao e da preferncia do python por palavras
reservadas alfabticas. Essa verso 2.0 tambm introduziu um sistema coletor
de lixo capaz de identificar e tratar ciclos de referncias.9
J o 1.6 incluiu uma licena CNRI substancialmente mais longa que a licena
CWI que estavam usando nas verses anteriores. Entre outras mudanas, essa
licena inclua uma clusula atestando que a licena era governada pelas leis
da Virgnia. A Free Software Foundation alegou que isso era incompatvel com
a GNU GPL. Tanto BeOpen quanto CNRI e FSF negociaram uma mudana na
licena livre do Python que o tornaria compatvel com a GPL. Python 1.6.1
idntico ao 1.6.0, exceto por pequenas correes de falhas e uma licena nova,
compatvel com a GPL.10
Python 2.1 era parecido com as verses 1.6.1 e 2.0. Sua licena foi renomeada
para Python Software Foundation License. Todo cdigo, documentao e
especificao desde o lanamento da verso alfa da 2.1 propriedade
Descrio
Exemplo da sintaxe
'Wikipedia' , u'Wiki
pedia'
list
[4.0, 'string',
True]
tuple
Tupla imutvel
(4.0, 'string',
True)
set([4.0, 'string',
True])
frozenset([4.0,
'string', True])
dict
conjunto associativo
{'key1': 1.0,
'key2': False}
int
42
2147483648L
float
Ponto flutuante
3.1415927
complex
Nmero complexo
3+2j
bool
True ou False
Booleano
Python tambm permite a definio dos tipos de dados prprios, atravs
de classes. Instncias so construdas invocando a classe ( FooClass() ), e as
classes so instncia da classe type , o que
permite metaprogramao e reflexo. Mtodos so definidos como funes
del
from
not
while
as
elif
global
or
with
assert
else
if
pass
yield
break
except
import
class
exec
in
raise
continue
finally
is
return
def
for
lambda
try
Nota: A partir da verso 3.0, o comando print passou a ser uma funo,
sendo obrigatrio o uso de parnteses.25
Exemplo de script
and \
2 < 5:
print ('Resultado: %f' % d)
ou
MESES_DO_ANO = ['janeiro', 'fevereiro', 'maro',
'abril',
'maio',
'junho',
'julho',
'agosto',
'setembro',
'outubro', 'novembro',
'dezembro']
NOVA LINHA
INDENT
if len(l) <= 1:
NOVA LINHA
INDENT
return[1]
NOVA LINHA
DEDENT
INDENT
r = [ ]
NOVA LINHA
for i in range(len(l)):
NOVA LINHA
s = l[:i] + l[i+1:]
NOVA LINHA
p = perm(s)
DEDENT
for x in p:
INDENT
DEDENT
r.append(l[i:i+1]+x)
NOVA LINHA
NOVA LINHA
NOVA LINHA
return r
Python foi desenvolvido para ser uma linguagem de fcil leitura, com um visual
agradvel, frequentemente usando palavras e no pontuaes como em outras
linguagens. Para a separao de blocos de cdigo, a linguagem usa espaos
em branco e indentao ao invs de delimitadores visuais como chaves (C,
Java) ou palavras (BASIC,Fortran, Pascal). Diferente de linguagens com
delimitadores visuais de blocos, em Python a indentao obrigatria. O
aumento da indentao indica o incio de um novo bloco, que termina da
diminuio da indentao.
Usando um editor de texto comum muito fcil existir erros de indentao, o
recomendado configurar o editor conforme a anlise lxica do Python ou
utilizar uma IDE. Todas as IDE que suportam a linguagem fazem indentao
automaticamente.
Exemplo:
Indentao correta
def valor1():
while True:
try:
c = int(raw_input('Primeiro Valor:
'))
return c
except ValueError:
print 'Invlido!'
Indentao incorreta
def valor1():
while True:
try:
c = int(raw_input('Primeiro Valor: '))
return c
except ValueError:
print 'Invlido!'
O cdigo est correto para os dois exemplos, mas o analisador lxico verificar
se a indentao est coerente. O analisador reconhecer as palavras
reservadas while , def , try , except , return , print e as cadeias de
caracteres entre aspas simples e a indentao, e se no houver problemas o
programa executar normalmente, seno apresentar a exceo: "Seu
programa est com erro no bloco de indentao".
Captura de exceo
try:
ham = spam.eggs
except AttributeError:
handle_error()
mdulos no segue.
Campos de
atuao
Campos de
atuao
Descrio
orientado a objetos;
SGC - Sistema de gerenciamento de contedo;
Framework para aplicaes web;
Framework para aplicaes web;
Framework 3D de alto nvel;
Mapeador objeto-relacional: traduz estruturas
relacionais para objetos Python e manipula
o banco de dados de forma transparente;
Mdulo para manipulao de vetores
e computao cientfica.
Plone
CherryPy
Web2py
Visual Python
SQLObject
Numarray
desenvolvimento web
desenvolvimento web
desenvolvimento web
computao grfica
banco de dados
computao cientfica
Desenvol
vedor
Boa
Constructor
Eric Python
IDE
Geany
IDLE
Team
Detlev
Offenbach
Team
Guido van
Rossum et al.
IronPython
Clarius Labs
Studio
Komodo
ActiveState
lti
ma
vers
o
Platforma
Toolkit
Licen
a
0.6.1
Independente
wxPython
GPL
4.1.2
Independente
Qt
GPL
1.23
Independente
GTK2
GPL
Tkinter
PSFL
Microsoft
Public
License
Plataforma Mozilla Propretrio
VS2008 Shell
Runtime
Desenvol
vedor
lti
ma
vers
o
2007
Platforma
Toolkit
Licen
a
PyDev (Eclip
Fabio Zadrozny 1.3.13
se)
multiplataforma
SWT
EPL
multiplataforma
wxPython
Licena
BSD
PyScripter mmm-experts
Stani's
Python
Editor
Stani
0.8.2
1.7.2 /
outubro de
2006
0.8.4c / 14
de
fevereiro
de 2008
3.0.2-1 /
27 de
novembro
de 2007
Windows
Independente
MIT
wxPython
Windows, Linux, OS
PyGTK
X
GPL
Propretrio