Vous êtes sur la page 1sur 19

Python

Origem: Wikipdia, a enciclopdia livre.

Nota: Para outros significados, veja Python (desambiguao).


Python

Paradigma

Multiparadigma:
Orientao a objetos
Programao imperativa
Programao funcional

Surgido em

19911

ltimaverso

3.4.1 (18 de maio de 20142 )

Criado por

Guido van Rossum1

Estilo de tipagem: Dinmica, forte


Dialetos:

CPython, IronPython,Jython, PyPy

Influenciada por

ABC,3 ALGOL 68, C3 ,Haskell, Icon, Java, Lisp,Modula-33 , Perl, Smalltalk

Influenciou

Boo, D, Falcon, Fantom,Groovy, JavaScript, Nimrod,Py, Ruby, Squirrel

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

pessoas faam associao com o rptil do mesmo nome


(em portugus, pton ou pito).

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

Histria[editar | editar cdigo-fonte]

Guido van Rossum, So Francisco, Califrnia

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

da Python Software Foundation (PSF), uma organizao sem fins


lucrativos fundada em 2001, um modelo tal qual da Apache Software
Foundation.10 O lanamento incluiu a mudana na especificao para suportar
escopo aninhado, assim como outras linguagens com escopo esttico.11Esta
funcionalidade estava desativada por padro, e somente foi requerida na
verso 2.2.
Uma grande inovao da verso 2.2 foi a unificao dos tipos Python (escritos
em C) e classes (escritas em Python) em somente uma hierarquia. Isto tornou o
modelo de objetos do Python consistentemente orientado a objeto.12 Tambm
foi adicionado generator, inspirado em Icon.13
O incremento da biblioteca padro e as escolhas sintticas foram fortemente
influenciadas por Java em alguns casos: o pacote logging 14 introduzido na
verso 2.3,15 oanalisador sinttico SAX, introduzido na verso 2.0 e a sintaxe
de decoradores que usa @ ,16 adicionadas na verso 2.4.17
Em 1 de outubro de 2008 foi lanada a verso 2.6, j visando a transio para
a verso 3.0 da linguagem. Entre outras modificaes, foram
includas bibliotecas paramultiprocessamento, JSON e E/S, alm de uma nova
forma de formatao de cadeias de caracteres.18
Atualmente a linguagem usada em diversas reas, como servidores de
aplicao e computao grfica. Est disponvel como linguagem de script em
aplicaes comoOpenOffice (Python UNO Bridge), Blender e pode ser utilizada
em procedimentos armazenados no sistema gerenciador de banco de
dados PostgreSQL (PL/Python).
A terceira verso da linguagem foi lanada em dezembro de 2008,19 chamada
Python 3.0 ou Python 3000. Com noticiado desde antes de seu
lanamento,20 houve quebra de compatibilidade com a famlia 2.x para corrigir
falhas que foram descobertas neste padro, e para limpar os excessos das
verses anteriores.5 A primeira verso alfa foi lanada em 31 de
agosto de 2007, a segunda em 7 de dezembro do mesmo ano.
Mudanas da verso incluem a alterao da palavra reservada print , que
passa a ser uma funo, tornando mais fcil a utilizao de uma verso
alternativa da rotina. Em Python 2.6, isso j est disponvel ao adicionar o
cdigo from __future__ import print_function .21 Tambm, a mudana
para Unicode de todas as cadeias de caracteres.

Filosofia[editar | editar cdigo-fonte]


Parte da cultura da linguagem gira ao redor de The Zen of Python, um poema
que faz parte do documento "PEP 20 (The Zen of Python)",22 escrito
pelo programador em Python de longa data Tim Peters, descrevendo
sumariamente a filosofia do Python. Pode-se v-lo atravs de um easter egg do
Python pelo comando:
>>> import this

Caractersticas[editar | editar cdigo-fonte]


Ver pgina anexa: Lista de exemplos de cdigo Python

Construes[editar | editar cdigo-fonte]


Construes de Python incluem: estrutura de
seleo ( if , else , elif ); estrutura de repetio ( for, while ), que itera
por um container, capturando cada elemento em uma varivel local dada;
construo de classes ( class ); construo de subrotinas ( def ); construo de
escopo ( with ), como por exemplo para adquirir um recurso.

Tipos de dado[editar | editar cdigo-fonte]


A tipagem de Python forte, pois os valores e objetos tm tipos bem definidos
e no sofrem coeres como em C ou Perl. So disponibilizados diversos tipos
de dadosnativos:
Tipo de dado

Descrio

Exemplo da sintaxe

str , unicode Uma cadeia de caracteres imutvel

'Wikipedia' , u'Wiki
pedia'

list

Lista heterognea mutvel

[4.0, 'string',
True]

tuple

Tupla imutvel

(4.0, 'string',
True)

set , frozens Conjunto no ordenado, no contm elementos


duplicados
et

set([4.0, 'string',
True])
frozenset([4.0,
'string', True])

dict

conjunto associativo

{'key1': 1.0,
'key2': False}

int

Nmero de preciso fixa, transparentemente


convertido para long caso no caiba em um
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

anexadas classe, e a sintaxe instncia.mtodo(argumento) um atalho


para Classe.mtodo(instncia, argumento) . Os mtodos devem
referenciar explicitamente a referncia para o objeto incluindo o
parmetro self como o primeiro argumento do mtodo.23
Antes da verso 3.0, Python possua dois tipos de classes: "old-style" e "newstyle". Classes old-style foram eliminadas no Python 3.0, e todas so new-style.
Em verses entre 2.2 e 3.0, ambos tipos de classes podiam ser usadas. A
sintaxe de ambos estilos a mesma, a diferena acaba sendo de onde objeto
da classe herdado, direta ou indiretamente (todas classes new-style herdam
de object e so instancias de type). As classes new-styles nada mais so que
tipos definidos pelo usurio.

Palavras reservadas[editar | editar cdigo-fonte]


O Python 2.5.2 define as seguintes 31 palavras reservadas:24
and

del

from

not

while

as

elif

global

or

with

assert

else

if

pass

yield

break

except

import

print

class

exec

in

raise

continue

finally

is

return

def

for

lambda

try

Operadores[editar | editar cdigo-fonte]


Os operadores bsicos de comparao como == , < , >= , entre outros so
usados em todos os tipos de dados, como nmeros, cadeias de texto, listas e
mapeamentos. Comparaes em cadeia como a < b < c possuem o mesmo
significado bsico que na matemtica: os termos so comparadas na ordem.
garantido que o processamento da expresso lgica ir terminar to cedo o
veredito claro, o princpio da avaliao mnima. Usando a expresso anterior,
se a < b falso, c no avaliado.
Quanto aos operadores lgicos, at Python 2.2 no havia o tipo de dado
booleano. Em todas as verses da linguagem os operadores lgicos
tratam "" , 0 , None , 0.0 , [] e {} como falso, enquanto o restante

tratado como verdadeiro de modo geral. Na verso 2.2.1 as


constantes True e False foram adicionadas (subclasses de 1 e 0
respectivamente). A comparao binria retorna uma das duas constantes
acima.
Os operadores booleanos and e or tambm seguem a avaliao mnima. Por
exemplo, y == 0 or x/y > 100 nunca lanar a exceo de diviso por zero.

Interpretador interativo[editar | editar cdigo-fonte]


O interpretador interativo uma caracterstica diferencial da linguagem,
porque h a possibilidade de testar o cdigo de um programa e receber o
resultado em tempo real, antes de iniciar a compilao ou inclu-las nos
programas. Por exemplo:
>>> 1+1
2
>>>
>>> a = 1+1
>>> print a
2
>>> print(a)
2
>>>

Nota: A partir da verso 3.0, o comando print passou a ser uma funo,
sendo obrigatrio o uso de parnteses.25

Anlise lxica[editar | editar cdigo-fonte]

Exemplo de script

No segundo captulo do Manual de Referncia da Linguagem Python citado


que a anlise lxica uma anlise do interpretador em si, os programas so
lidos por um analisador sinttico que divide o cdigo em tokens.

Todo programa dividido em linhas lgicas que so separadas


pelo token NEWLINE ou NOVA LINHA, as linhas fsicas so trechos de cdigo
divididos pelo caractere ENTER. Linhas lgicas no podem ultrapassar linhas
fsicas com exceo de juno de linhas, por exemplo:
if resultado > 2 and \
1 <= 5

and \

2 < 5:
print ('Resultado: %f' % d)

ou
MESES_DO_ANO = ['janeiro', 'fevereiro', 'maro',
'abril',

'maio',

'junho',

'julho',

'agosto',

'setembro',

'outubro', 'novembro',

'dezembro']

Para a delimitao de blocos de cdigos os delimitadores so colocados em


uma pilha e diferenciados por sua indentao. Iniciando a pilha com valor 0
(zero) e colocando valores maiores que os anteriores na pilha. Para cada
comeo de linha, o nvel de indentao comparado com o valor do topo da
pilha. Se o nmero da linha for igual ao topo da pilha, a pilha no alterada. Se
o valor for maior a pilha recebe o nvel de indentao da linha e o
nome INDENT (empilhamento) se o nvel de indentao for menor, ento
desempilhado at chegar a um nvel de indentao recebendo o
nome DEDENT (desempilhamento) e se no encontrar nenhum valor gerado
um erro de indentao.
Abaixo um exemplo de permutao, retirado do captulo 2.1 sobre Estrutura de
linhas na Anlise lxica do Manual de Referncia da linguagem (Language
Reference Manual):
def perm(l):

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

Indentao[editar | editar cdigo-fonte]

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

Compilador de bytecode[editar | editar cdigo-fonte]


A linguagem de altssimo nvel, como j dito, mas ela tambm
pode compilar seus programas para que a prxima vez que o executar no
precise compilar novamente o programa, reduzindo o tempo de carga na
execuo.
Utilizando o interpretador interativo no necessrio a criao do arquivo de
Python compilado, os comandos so executados interativamente. Porm
quando um programa ou um mdulo evocado, o interpretador realiza a
anlise lxica e sinttica, compila o cdigo de alto nvel se necessrio e o
executa na mquina virtual da linguagem.
O bytecode armazenado em arquivos com extenso .pyc ou .pyo , este
ltimo no caso de bytecode otimizado. Interessante notar que o bytecode da
linguagem tambm de alto nvel, ou seja, mais legvel aos seres humanos
que o cdigo de byte do C, por exemplo. Para descompilar um cdigo de byte
utilizado o mdulo dis da biblioteca padro da linguagem e existem mdulos
de terceiros que tornam o bytecode mais confuso, tornando a descompilao
ineficaz.
Normalmente, o Python trabalha com dois grupos de arquivos:
1. Os mdulos do ncleo da linguagem, sua biblioteca padro e os mdulos
independentes, criados pelo usurio.
2. No ncleo do interpretador existe o analisador lxico, o analisador sinttico que
utiliza Estruturas de Objetos (tempo de execuo), o Compilador que aloca
memria(tempo de execuo) e depois do Avaliador de cdigo que modifica
o estado atual do programa (tempo de execuo), mostrando resultado para o
usurio.

Polimorfismo[editar | editar cdigo-fonte]


O conceito de polimorfismo descreve como objetos podem ser manipulados e
acessados usando atributos e comportamentos em comum sem considerar sua
classe especfica e indica a presena de late binding, permitindo sobrecarga e
determinao de tipos em tempo de execuo e verificao.

Muitas linguagens orientadas a objeto utilizam assinaturas de funo para


determinar qual verso de um mtodo sobrecarregado chamar. No entanto, as
chamadas de funo em Python so universais ou genricas sem determinao
de tipo. Por isso, sobrecarga no suportada na linguagem.

Orientao a objetos[editar | editar cdigo-fonte]


Python suporta a maioria das tcnicas da programao orientada a objeto.
Qualquer objeto pode ser usado para qualquer tipo, e o cdigo funcionar
enquanto haja mtodos e atributos adequados. O conceito de objeto na
linguagem bastante abrangente: classes, funes, nmeros e mdulos so
todos considerados objetos. Tambm h suporte
para metaclasses, polimorfismo, e herana (inclusive herana mltipla). H um
suporte limitado para variveis privadas.
Na verso 2.2 de Python foi introduzido um novo estilo de classes em que
objetos e tipos foram unificados, permitindo a especializao de tipos. J a
partir da verso 2.3 foi introduzido um novo mtodo de resoluo de
ambiguidades para heranas mltiplas.26
Uma classe definida com class nome: , e o cdigo seguinte a composio
dos atributos. Todos os mtodos da classe recebem uma referncia a uma
instncia da prpria classe como seu primeiro argumento, e a conveno que
se chame este argumento self . Assim os mtodos so
chamados objeto.mtodo(argumento1, argumento2, ...) e so definidos
iguais a uma funo, como mtodo(self, argumento1, argumento2, ...) .
Veja que o parmetro self conter uma referncia para a instncia da classe
definida em objeto quando for efetuada esta chamada. Os atributos da classe
podem ser acessados em qualquer lugar da classe, e os atributos de instncia
(ou varivel de instncia) devem ser declarados dentro dos mtodos utilizando
a referncia instncia atual (self) (ver cdigo contextualizado em anexo).
Em Python no existe proteo dos membros duma classe ou instncia pelo
interpretador, o chamado encapsulamento. Convenciona-se que atributos com
o nome comeando com um _ so de uso privado da classe, mas no h um
policiamento do interpretador contra acesso a estes atributos. Uma exceo

so nomes comeando com __ , no caso em que o interpretador modifica o


nome do atributo (ver cdigo contextualizado em anexo).
Python permite polimorfismo, que condiz com a reutilizao de cdigo. fato
que funes semelhantes em vrias partes do software sejam utilizadas vrias
vezes, ento definimos esta funo como uma biblioteca e todas as outras
funes que precisarem desta a chamam sem a necessidade de reescrevla (ver cdigo contextualizado em anexo).

Programao funcional[editar | editar cdigo-fonte]


Uma das construes funcionais de Python compreenso de listas, uma
forma de construir listas. Por exemplo, pode-se usar a tcnica para calcular as
cinco primeiras potncias de dois. O algoritmo quicksort tambm pode ser
expressado usando a mesma tcnica (ver cdigos contextualizados para
ambos os casos em anexo).
Em Python, funes so objetos de primeira classe que podem ser criados e
armazenados dinamicamente. O suporte funes annimas est na
construo lambda (clculo Lambda). No h disponibilidade de funes
annimas de fato, pois os lambdas contm somente expresses e no blocos
de cdigo.
Python tambm suporta clausuras lxicas desde a verso 2.2 (ver cdigos
contextualizados para ambos os casos em anexo). J geradores foram
introduzidos na verso 2.2 e finalizados na verso 2.3, e representam o
mecanismo de Python para a avaliao preguiosa de funes (ver cdigos
contextualizados para ambos os casos em anexo).

Tratamento de excees[editar | editar cdigo-fonte]


Python suporta e faz uso constante de tratamento de excees como uma
forma de testar condies de erro e outros eventos inesperados no programa.
inclusive possvel capturar uma exceo causada por um erro de sintaxe. O
estilo da linguagem apia o uso de excees sempre que uma condio de erro
pode aparecer. Por exemplo, ao invs de testar a disponibilidade de acesso a
um recurso, a conveno simplesmente tentar usar o recurso e capturar a

exceo caso o acesso seja rejeitado (recurso inexistente, permisso de acesso


insuficiente, recurso j em uso, ...).
Excees so usadas frequentemente como uma estrutura de seleo,
substituindo blocos if-else , especialmente em situaes que
envolvem threads. Uma conveno de codificao o EAFP, do ingls, " mais
fcil pedir perdo que permisso". Isso significa que em termos de
desempenho prefervel capturar excees do que testar atributos antes de os
usar. Segue abaixo exemplos de cdigo que testam atributos ("pedem
permisso") e que capturam excees ("pedem perdo"):
Teste de atributo
if hasattr(spam,
'eggs'):
ham = spam.eggs
else:
handle_error()

Captura de exceo
try:
ham = spam.eggs
except AttributeError:
handle_error()

Ambos os cdigos produzem o mesmo efeito, mas h diferenas de


desempenho. Quando spam possui o atributo eggs , o cdigo que captura
excees mais rpido. Caso contrrio, a captura da exceo representa uma
perda considervel de desempenho, e o cdigo que testa o atributo mais
rpido. Na maioria dos casos o paradigma da captura de excees mais
rpido, e tambm pode evitar problemas de concorrncia.27 Por exemplo, num
ambiente multitarefa, o espao de tempo entre o teste do atributo e seu uso de
fato pode invalidar o atributo, problema que no acontece no caso da captura
de excees.

Biblioteca padro[editar | editar cdigo-fonte]


Python possui uma grande biblioteca padro, geralmente citada como um dos
maiores triunfos da linguagem,28 fornecendo ferramentas para diversas
tarefas. Recentemente, a biblioteca Boost do C++ incluiu uma biblioteca para
permitir a interoperabilidade entre as duas linguagens. Por conta da grande
variedade de ferramentas fornecida pela biblioteca padro, combinada com a a
habilidade de usar linguagens de nvel mais baixo como C e C++, Python pode
ser poderosa para conectar componentes diversos de software.
A biblioteca padro conta com facilidades para escrever aplicaes para
a Internet, contando com diversos formatos e protocolos como MIME e HTTP.
Tambm h mdulos para criar interfaces grficas, conectar em bancos de
dados relacionais e manipular expresses regulares.
Algumas partes da biblioteca so cobertas por especificaes (por exemplo, a
implementao WSGI da wsgiref segue o PEP 33329 ), mas a maioria dos

mdulos no segue.

Comentrios[editar | editar cdigo-fonte]


Python fornece duas alternativas para documentar o cdigo. A primeira o uso
de comentrios para indicar o que certo cdigo faz. Comentrios comeam
com # e so terminados pela quebra da linha. No h suporte para
comentrios que se estendem por mais de uma linha; cada linha consecutiva
de comentrio deve indicar # . A segunda alternativa o uso de cadeias de
caractere, literais de texto inseridos no cdigo sem atribuio. Cadeias de
caracteres em Python so delimitadas por " ou ' para nica linha e
por """ ou ''' para mltiplas linhas. Entretanto, conveno usar o
mtodos de mltiplas linhas em ambos os casos.
Diferente de comentrios, a cadeias de caracteres usadas como documentao
so objetos Python e fazem parte do cdigo interpretado. Isso significa que um
programa pode acessar sua prpria documentao e manipular a informao.
H ferramentas que extraem automaticamente essa documentao para a
gerao da documentao deAPI a partir do cdigo. Documentao atravs de
cadeias de caracteres tambm pode ser acessada a partir do interpretador
atravs da funo help() .

Plataformas disponveis[editar | editar cdigo-fonte]


A linguagem e seu interpretador esto disponveis para as mais
diversas plataformas, desde Unix (Linux, FreeBSD, Solaris, MacOS X,
etc.), Windows, .NET, verses antigas de MacOS at consoles de jogos
eletrnicos ou mesmo alguns celulares, como a srie 60, N8xx(PyMaemo)
da Nokia e palmtops.
Para algum sistema operacional no suportado, basta que exista
um compilador C disponvel e gerar o Python a partir do fonte. O cdigo fonte
traduzido pelo interpretador para o formato bytecode, que multiplataforma e
pode ser executado e distribudo sem fonte original.

Implementaes[editar | editar cdigo-fonte]


A implementao original e mais conhecida do Python o CPython, escrita
em C e compatvel com o padro C89,30 sendo distribuda com uma grande
biblioteca padro escrita em um misto de Python e C. Esta implementao
suportada em diversas plataformas, incluindo Microsoft Windows e
sistemas Unix-like modernos.
Stackless Python uma variao do CPython que
implementa microthreads (permitindo multitarefa sem o uso de threads), sendo
suportada em quase todas as plataformas que a implementao original.
Existem tambm implementaes para plataformas j existentes: Jython para
a Plataforma Java e IronPython para .NET.
Em 2005 a Nokia lanou um interpretador Python para os telefones
celulares S60, chamado PyS60. Essa verso inclui vrios mdulos das
implementaes tradicionais, mas tambm alguns mdulos adicionais para a
integrao com o sistema operacional Symbian. Uma implementao
para Palm pode ser encontrada no Pippy. J o PyPy, a linguagem Python
totalmente escrita em Python.
Diversas implementaes, como CPython, pode funcionar como
um interpretador de comandos em que o usurio executa as instrues
sequencialmente, recebendo o resultado automaticamente. A execuo
compilada do cdigo oferece um ganho substancial em velocidade, com o
custo da perda da interatividade.

Desenvolvimento[editar | editar cdigo-fonte]


O desenvolvimento de Python conduzido amplamente atravs do processo
Python Enhancement Proposal ("PEP"), em portugus Proposta de Melhoria do
Python. Os PEPs so documentos de projeto padronizados que fornecem
informaes gerais relacionadas ao Python, incluindo propostas,
descries, justificativas de projeto (design rationales) e explicaes para
caractersticas da linguagem. PEPs pendentes so revisados e comentados por
Van Rossum, o Benevolent Dictator for Life (lder arquiteto da linguagem) do
projeto Python. Desenvolvedores do CPython tambm se comunicam atravs

de uma lista de discusso, python-dev, que o frum principal para discusso


sobre o desenvolvimento da linguagem. Questes especficas so discutidas
no gerenciador de erros Roundup mantido em python.org. O desenvolvimento
acontece no auto-hospedado svn.python.org

Licena[editar | editar cdigo-fonte]


Python possui uma licena livre aprovada pela OSI e compatvel com a GPL,
porm menos restritiva. Ela prev (entre outras coisas) que binrios da
linguagem sejam distribudos sem a necessidade de fornecer o cdigo
fonte junto.31

Mdulos e frameworks[editar | editar cdigo-fonte]


Ao longo do tempo tm sido desenvolvidos pela comunidade de programadores
muitas bibliotecas de funes especializadas (mdulos) que permitem expandir
as capacidades base da linguagem. Entre estes mdulos especializados
destacam-se:
Descrio

Campos de
atuao

Framework para desenvolvimento gil de


desenvolvimento web
aplicaes web;
Framework para desenvolvimento de
Pylons
desenvolvimento web
aplicaes web;
Framework baseado em vrias outras tecnologias
TurboGears
existentes no mundo que gira em torno da
desenvolvimento web
linguagem Python;
Matplotlib - Matplotlib /
processamento de
biblioteca para manipulao de grficos 2D;
Pylab
imagem
processamento de
Python Imaging Library biblioteca para manipulao de imagens digitais;
imagem
PyOpenGL - Python
suporte multiplataforma ao OpenGL;
computao grfica
OpenGL Binding
desenvolvimento de
Conjunto de mdulos para o desenvolvimento de
Pygame
jogos eletrnicos;
jogos eletrnicos, incluindo grficos SDL;
computao grfica
Framework para o desenvolvimento de
desenvolvimento de
aplicaes de rede. Inclui mdulos para servidor
Twisted
software;
web, de aplicao, SSH e diversos
desenvolvimento web
outros protocolos;
PYRO - Python Remote Framework para o desenvolvimento de sistemas computao
Objects
distribudos;
distribuda
ZODB
Sistema de persistncia e banco de dados
banco de dados
Django

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

Interfaces grficas[editar | editar cdigo-fonte]


Exemplos de bibliotecas de GUI disponveis para Python incluem:
Descrio
Etk
interface para a biblioteca EFL
PyGTK interface para a biblioteca GTK
PyQT
interface para a biblioteca QT
Tkinter
Mdulo padro para GUI no Python
wxPython interface para a biblioteca wxWidgets
Wax
Construdo para simplificar o uso do wxPython

Ambientes de desenvolvimento integrado[editar | editar cdigofonte]


Existem vrios ambientes de desenvolvimento integrado (IDE) disponveis para
Python:

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

3.0 / 2008 Independente


1.0 / 10 de
dezembro Windows
de 2007
4.1.1 /
multiplataforma
junho de

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

PythonCard Alex Tweedly

multiplataforma

wxPython

Licena
BSD

PyScripter mmm-experts
Stani's
Python
Editor

Stani

Wing IDE Wingware

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

Aplicaes[editar | editar cdigo-fonte]


Alguns dos maiores projetos que utilizam Python so o servidor de
aplicao Zope, o compartilhador de arquivos Mnet, o stio YouTube e o cliente
original do BitTorrent. Grandes organizaes que usam a linguagem
incluem Google32 (parte dos crawlers), Yahoo! (para o stio de grupos de
usurios) e NASA.33 O sistema de gerenciamento de reservas da Air
Canada tambm usa Python em alguns de seus componentes.34 A linguagem
tambm tem bastante uso na indstria da segurana da informao.
A linguagem tem sido embarcada como linguagem de script em diversos
softwares, como em programas de edio tridimensional
como Maya,35 Autodesk Softimage,TrueSpace e Blender.36 Programas de
edio de imagem tambm a usam para scripts, como o GIMP.37 Para diversos
sistema operacionais a linguagem j um componente padro, estando
disponvel em diversas distribuies Linux. O Red Hat Linux usa Python para
instalao, configurao e gerenciamento de pacotes.
Outros exemplos incluem o Plone, sistema de gerenciamento de
contedo desenvolvido em Python e Zope e a Industrial Light & Magic,38 que
produz filmes da srie Star Wars usando extensivamente Python para
a computao grfica nos processos de produo dos filmes.