Você está na página 1de 14

14/03/2017 Python Wikipdia, a enciclopdia livre

Python
Origem: Wikipdia, a enciclopdia livre.

Python uma linguagem de programao de alto nvel[4],


interpretada, de script, imperativa, orientada a objetos, funcional, Python
de tipagem dinmica 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 Paradigma Multiparadigma:
linguagem como um todo no formalmente especificada. O Orientao a objetos
padro de facto a implementao CPython. Programao imperativa
Programao funcional
A linguagem foi projetada com a filosofia de enfatizar a Surgido em 1991[1]
importncia do esforo do programador sobre o esforo ltima 3.6.0 (23 de dezembro de 2016 [2])
computacional. Prioriza a legibilidade do cdigo sobre a verso
velocidade ou expressividade. Combina uma sintaxe concisa e Criado por Guido van Rossum[1]
clara com os recursos poderosos de sua biblioteca padro e por
mdulos e frameworks desenvolvidos por terceiros. Estilo de Dinmica, forte
tipagem:
Python uma linguagem de propsito geral de alto nvel, multi Dialetos: CPython, IronPython, Jython,
PyPy
paradigma, suporta o paradigma orientado a objetos, imperativo,
funcional e procedural. Possui tipagem dinmica e uma de suas Influenciada ABC,[3] ALGOL 68, C[3],
por Haskell, Icon, Java, Lisp,
principais caractersticas permitir a fcil leitura do cdigo e
exigir poucas linhas de cdigo se comparado ao mesmo programa Modula-3[3], Perl, Smalltalk
em outras linguagens. Devido as suas caractersticas, ela Influenciou Boo, D, Falcon, Fantom,
principalmente utilizada para processamento de textos, dados Groovy, JavaScript, Nimrod, Py,
Ruby, Squirrel
cientficos e criao de CGIs para pginas dinmicas para a web.
Pgina www.python.org (https://www.p
O nome Python teve a sua origem no grupo humorstico britnico oficial ython.org/)

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
1 Histria
2 Filosofia
2.1 Construes
2.2 Tipos de dado
2.3 Palavras reservadas
2.4 Operadores
2.5 Interpretador interativo
2.6 Anlise lxica
2.6.1 Indentao
2.7 Compilador de bytecode
2.8 Orientao a objetos
2.9 Programao funcional
2.10 Tratamento de excees
2.11 Biblioteca padro
2.12 Interoperabilidade

https://pt.wikipedia.org/wiki/Python 1/14
14/03/2017 Python Wikipdia, a enciclopdia livre

2.13 Comentrios
3 Plataformas disponveis
4 Implementaes
5 Desenvolvimento
6 Licena
7 Mdulos e frameworks
7.1 Interfaces grficas
8 Ambientes de desenvolvimento integrado
9 Aplicaes
10 Referncias
11 Bibliografia
12 Ligaes externas

Histria
O Python foi concebido no final de 1989[4][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 Amoeba[6] 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]
Guido van Rossum, So Francisco,
Python foi feita com base na linguagem ABC, possui parte da Califrnia
sintaxe derivada do C, compreenso de listas, funes anonimas e
funo map de Haskell. Os iteradores so baseados na Icon,
tratamentos de exceo e mdulos da Modula-3, expresses regulares de Perl.

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 a programao 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

https://pt.wikipedia.org/wiki/Python 2/14
14/03/2017 Python Wikipdia, a enciclopdia livre

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.[11] Esta 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] o analisador 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 para multiprocessamento, 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 como OpenOffice (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.

Em 2012, foi criado o Raspberry Pi, cujo nome foi baseado na linguagem Python. Uma das principais
linguagens escolhidas Python. Python influenciou vrias linguagens, algumas delas foram Boo e Cobra, que
usa a indentao como definio de bloco e Go, que se baseia nos princpios de desenvolvimento rpido de
Python.
https://pt.wikipedia.org/wiki/Python 3/14
14/03/2017 Python Wikipdia, a enciclopdia livre

Atualmente, Python um dos componentes padro de vrios sistemas operacionais, entre eles esto a maioria
das distribuies do Linux, AmigaOS 4, FreeBSD, NetBSD, OpenBSD e OS X. A linguagem se tornou a
padro no curso de cincias da computao do MIT em 2009

Filosofia
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

Construes

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 sub-rotinas (def); construo de escopo (with), como por exemplo para adquirir um recurso.

Tipos de dado

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 dados nativos:

Tipo de
Descrio Exemplo da sintaxe
dado
str,
Uma cadeia de caracteres imutvel 'Wikipedia', u'Wikipedia'
unicode
list Lista heterognea mutvel [4.0, 'string', True]
tuple Tupla imutvel (4.0, 'string', True)
set([4.0, 'string', True])
set,
Conjunto no ordenado , no contm elementos duplicados frozenset([4.0, 'string',
frozenset
True])
{'key1': 1.0, 'key2':
dict conjunto associativo
False}
Nmero de preciso fixa, transparentemente convertido para long caso no 42
int
caiba em um int. 2147483648L
float Ponto flutuante 3.1415927
complex Nmero complexo 3+2j
bool Booleano True ou False

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

https://pt.wikipedia.org/wiki/Python 4/14
14/03/2017 Python Wikipdia, a enciclopdia livre

Palavras reservadas

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

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

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

Anlise lxica

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 Exemplo de script


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:

https://pt.wikipedia.org/wiki/Python 5/14
14/03/2017 Python Wikipdia, a enciclopdia livre

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 r = [ ] NOVA LINHA
for i in range(len(l)): NOVA LINHA
INDENT s = l[:i] + l[i+1:] NOVA LINHA
p = perm(s) NOVA LINHA
DEDENT for x in p: NOVA LINHA
INDENT r.append(l[i:i+1]+x) NOVA LINHA
DEDENT return r

Indentao

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 Indentao incorreta

def valor1 (): def valor1 ():


while True: while True:
try: try:
c = int(raw_input ('Primeiro Valor: ' )) c = int(raw_input ('Primeiro Valor: ' ))
return c return c
except ValueError : except ValueError :
print 'Invlido!' print 'Invlido!'

https://pt.wikipedia.org/wiki/Python 6/14
14/03/2017 Python Wikipdia, a enciclopdia livre

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

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.

Orientao a objetos

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

https://pt.wikipedia.org/wiki/Python 7/14
14/03/2017 Python Wikipdia, a enciclopdia livre

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 reescrev-la (ver cdigo
contextualizado em anexo).

Python no possui overloading; no possvel criar duas funes com o mesmo nome, pois as elas so
consideradas atributos da classe. Caso o nome da funo se repita em outra assinatura, o interpretador considera
esta ultima como override e sobrescreve a funo anterior. Algumas operaes entre diferentes tipos so
realizadas atravs de coero (ex.: 3.2 + 3).

possvel encapsular abstraes em mdulos e pacotes, quando um arquivo criado com a extenso .py, ele
automaticamente define um mdulo. Um diretrio com vrios mdulos chamado de pacote e deve conter um
modulo chamado __init__, para defini-lo como principal. Estas diferenciaes ocorrem apenas no sistema de
arquivos, os objetos criados so sempre mdulos, caso o cdigo no defina qual dos mdulos ser importado, o
padro o __init__.

Programao funcional

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 a 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

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 Captura de exceo

https://pt.wikipedia.org/wiki/Python 8/14
14/03/2017 Python Wikipdia, a enciclopdia livre

if hasattr (spam, 'eggs' ): try:


ham = spam.eggs ham = spam.eggs
else: except AttributeError :
handle_error () 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

Python possui uma grande biblioteca padro, geralmente citada como um dos maiores trunfos da linguagem,[28]
fornecendo ferramentas para diversas tarefas. Por conta da grande variedade de ferramentas fornecida pela
biblioteca padro, combinada com 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 333[29]), mas a maioria dos mdulos no segue.

Interoperabilidade

Um outro ponto forte da linguagem sua capacidade de interoperar com vrias outras linguagens,
principalmente cdigo nativo. A documentao da linguagem inclui exemplos de como usar a Python C-API
para escrever funes em C chamveis diretamente de cdigo Python - mas atualmente esse sequer o modo
mais indicado de interoperao, havendo alternativas tais como Cython, Swig ou cffi (https://cffi.readthedocs.or
g/en/latest/). A biblioteca Boost do C++ inclui uma biblioteca para permitir a interoperabilidade entre as duas
linguagens, e pacotes cientficos fazem uso de bibliotecas de alta performance numrica escritos em Fortran e
mantidos h dcadas.

Comentrios

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
de API a partir do cdigo. Documentao atravs de cadeias de caracteres tambm pode ser acessada a partir do
interpretador atravs da funo help().

Plataformas disponveis
https://pt.wikipedia.org/wiki/Python 9/14
14/03/2017 Python Wikipdia, a enciclopdia livre

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
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
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
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
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:
https://pt.wikipedia.org/wiki/Python 10/14
14/03/2017 Python Wikipdia, a enciclopdia livre

Descrio Campos de atuao


Django Framework para desenvolvimento gil de aplicaes web; desenvolvimento web
Pylons Framework para desenvolvimento de aplicaes web; desenvolvimento web
Framework baseado em vrias outras tecnologias existentes no mundo
TurboGears desenvolvimento web
que gira em torno da linguagem Python;
Matplotlib -
biblioteca para manipulao de grficos 2D; processamento de imagem
Matplotlib / Pylab
Python Imaging
biblioteca para manipulao de imagens digitais ; processamento de imagem
Library
PyOpenGL -
Python OpenGL suporte multiplataforma ao OpenGL ; computao grfica
Binding
desenvolvimento de jogos
Conjunto de mdulos para o desenvolvimento de jogos eletrnicos ,
Pygame eletrnicos ; computao
incluindo grficos SDL;
grfica
Framework para o desenvolvimento de aplicaes de rede. Inclui mdulos desenvolvimento de software ;
Twisted
para servidor web , de aplicao , SSH e diversos outros protocolos ; desenvolvimento web
PYRO - Python
Framework para o desenvolvimento de sistemas distribudos ; computao distribuda
Remote Objects
ZODB Sistema de persistncia e banco de dados orientado a objetos ; banco de dados
Plone SGC - Sistema de gerenciamento de contedo ; desenvolvimento web
CherryPy Framework para aplicaes web; desenvolvimento web
Web2py Framework para aplicaes web; desenvolvimento web
Visual Python Framework 3D de alto nvel; computao grfica
Mapeador objeto-relacional : traduz estruturas relacionais para objetos
SQLObject banco de dados
Python e manipula o banco de dados de forma transparente;
Numarray Mdulo para manipulao de vetores e computao cientfica . computao cientfica

Interfaces grficas

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
Kivy (http://kivy.org/#home) Biblioteca para a construo de aplicativos multiplataforma

Ambientes de desenvolvimento integrado


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

https://pt.wikipedia.org/wiki/Python 11/14
14/03/2017 Python Wikipdia, a enciclopdia livre

ltima
IDE Desenvolvedor Plataforma Toolkit Licena
verso
IEP (Interactive Editor for Python -
iep-project 3.7 multiplataforma BSD
Python) Qt
Apache 2
Pycharm JetBrains 4.5.4 multiplataforma java
license
Boa Constructor Team 0.6.1 Independente wxPython GPL
Eric Python IDE Detlev Offenbach 4.1.2 Independente Qt GPL
Geany Team 1.23 Independente GTK2 GPL
IDLE Guido van Rossum et al. 3.0 / 2008 Independente Tkinter PSFL
1.0 / 10 de VS2008 Microsoft
IronPython Studio Clarius Labs dezembro de Windows Shell Public
2007 Runtime License
4.1.1 / junho de Plataforma
Komodo ActiveState multiplataforma Propretrio
2007 Mozilla
PyDev (Eclipse) Fabio Zadrozny 1.3.13 multiplataforma SWT EPL
Licena
PythonCard Alex Tweedly 0.8.2 multiplataforma wxPython
BSD
1.7.2 / outubro
PyScripter mmm-experts Windows MIT
de 2006
0.8.4c / 14 de
Stani's Python Editor Stani fevereiro de Independente wxPython GPL
2008
Spyder (https://github.com/s Spyder developer community (htt 2.3.2 /
Windows,
pyder-ide/spyder) (formerly p://groups.google.com/group/spyd December 3, PyQt4 MIT
Linux, OS X
Pydee) erlib) 2014
3.0.2-1 / 27 de
Windows,
Wing IDE Wingware novembro de PyGTK Propretrio
Linux, OS X
2007

Aplicaes
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 Google[32] (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.

Referncias
ingls). Python Software Foundation. Consultado em 5
1. HISTORY (http://svn.python.org/view/*checkout*/p de junho de 2008
ython/trunk/Misc/HISTORY). Fonte do Python (em 2. Python Release Python 3.6.0(https://www.python.or
g/downloads/release/python-360/)(em ingls). 23 de
https://pt.wikipedia.org/wiki/Python 12/14
14/03/2017 Python Wikipdia, a enciclopdia livre

dezembro de 2016. Consultado em 4 de janeiro de ml) (em ingls). Python Software Foundation.
2017 Consultado em 3 de outubro de 2008
3. Guido van Rossum (Maio de 1996).Foreword for 19. Python 3.0 Release(http://www.python.org/downloa
"Programming Python" (1st ed.)(http://www.python. d/releases/3.0/) (em ingls). Python Software
org/doc/essays/foreword/)(em ingls). Python Foundation. Consultado em 3 de dezembro de 2008
Software Foundation. Consultado em 12 de junho de 20. Sarah Stokely (1 de fevereiro de 2008).Python 3.0 to
2008 be backwards incompatible(http://www.itnews.com.a
4. The Making of Python(http://www.artima.com/intv/ u/News/69326,breaking-the-python-code.aspx)(em
pythonP.html) (em ingls). Artima Developer. ingls). iTnews. Consultado em 11 de junho de 2008
Consultado em 22 de maro de 2007 21. Georg Brandl. Make print a function(http://www.pyt
5. Naomi Hamilton (5 de agosto de 2008).The A-Z of hon.org/dev/peps/pep-3105/)(em ingls). Consultado
Programming Languages: Python(http://www.compu em 3 de outubro de 2008
terworld.com.au/article/255835/a-z_programming_lan 22. PEP 20 - The Zen of Python(http://www.python.or
guages_python/?fp=4194304&fpid=1&pf=1)(em g/dev/peps/pep-0020/)(em ingls). Python - Ncleo de
ingls). Computerworld. Consultado em 17 de agosto Desenvolvimento. Consultado em 15 de janeiro de
de 2008 2010
6. Why was Python created in the first place?(http://do 23. Classes Random Remarks(http://docs.python.or
cs.python.org/faq/general#why-was-python-created-in- g/tutorial/classes.html#random-remarks). Python
the-first-place) (em ingls). Python FAQ. Consultado Documentation (em ingls). Python Software
em 22 de maro de 2007 Foundation
7. LJ #37: Python 1.4 Update(http://www.amk.ca/pyth 24. Keywords (http://docs.python.org/reference/lexical_
on/writing/12-14) (em ingls). Consultado em 29 de analysis.html#keywords). Manual de Referncia do
abril de 2007 Python (em ingls). Python Software Foundation. 21
8. Guido van Rossum.Computer Programming for de fevereiro de 2008. Consultado em 12 de setembro
Everybody (http://www.python.org/doc/essays/cp4e.h de 2008
tml) (em ingls). Consultado em 22 de maro de 2007 25. What's New In Python 3.0(http://docs.python.org/re
9. A.M. Kuchling and Moshe Zadka.What's New in lease/3.0/whatsnew/3.0.html)(em ingls). Python
Python 2.0 (http://www.amk.ca/python/2.0/)(em Software Foundation. Consultado em 15 de janeiro de
ingls). Consultado em 22 de maro de 2007 2011
10. History of the software(http://docs.python.org/relea 26. Michele Simionato.The Python 2.3 Method
se/2.5/lib/node951.html). Referncia da Biblioteca Resolution Order (http://www.python.org/download/r
Python (em ingls). Consultado em 22 de maro de eleases/2.3/mro/) (em ingls). Python Software
2007 Foundation. Consultado em 11 de junho de 2008
11. Jeremy Hylton. Statically Nested Scopes(http://ww 27. EAFP vs LBYL (was Re: A little disappointed so
w.python.org/dev/peps/pep-0227/)(em ingls). far) (http://mail.python.org/pipermail/python-list/200
Consultado em 22 de maro de 2007 3-May/205182.html). web.archive.org. Consultado em
12. 2 PEPs 252 and 253: Type and Class Changes(htt 6 de maio de 2012. Cpia arquivada em 29 de
p://docs.python.org/release/2.2.3/whatsnew/sect-rellink setembro de 2007 (http://web.archive.org/web/2007092
s.html) (em ingls). Python Software Foundation. 9122422/http://mail.python.org/pipermail/python-list/2
Consultado em 11 de junho de 2008 003-May/205182.html)
13. 4 PEP 255: Simple Generators(http://docs.python.or 28. Przemyslaw Piotrowski (Julho de 2006).Build a
g/release/2.2.3/whatsnew/node5.html)(em ingls). Rapid Web Development Environment for Python
Python Software Foundation. Consultado em 11 de Server Pages and Oracle(http://www.oracle.com/tech
junho de 2008 nology/pub/articles/piotrowski-pythoncore.html)(em
14. PEP 282 - A Logging System(http://www.python.or ingls). Oracle. Consultado em 11 de junho de 2008
g/dev/peps/pep-0282/)(em ingls). Python Software 29. Phillip J. Eby (7 de dezembro de 2003).PEP 333 --
Foundation. Consultado em 11 de junho de 2008 Python Web Server Gateway Interface v1.0(http://w
15. 8 PEP 282: The logging Package(http://docs.pytho ww.python.org/dev/peps/pep-0333/)(em ingls).
n.org/release/2.3/whatsnew/node9.html)(em ingls). Python Software Foundation. Consultado em 11 de
Python Software Foundation. Consultado em 11 de junho de 2008
junho de 2008 30. Guido van Rossum (5 de julho de 2001).PEP 7 --
16. PEP 318 - Decorators for Functions and Methods(ht Style Guide for C Code(http://www.python.org/dev/p
tp://www.python.org/dev/peps/pep-0318/)(em ingls). eps/pep-0007/) (em ingls). Python Software
Python Software Foundation. Consultado em 11 de Foundation. Consultado em 11 de junho de 2008
junho de 2008 31. Python License (http://www.python.org/psf/license/)
17. 5 PEP 318: Decorators for Functions and Methods (em ingls). Python Software Foundation. Consultado
(http://docs.python.org/release/2.4/whatsnew/node6.ht em 11 de junho de 2008
ml) (em ingls). Python Software Foundation. 32. Quotes about Python(http://python.org/about/quote
Consultado em 11 de junho de 2008 s/) (em ingls). Python Software Foundation.
18. A.M. Kuchling (1 de outubro de 2008).What's New Consultado em 11 de junho de 2008
in Python 2.6 (http://docs.python.org/whatsnew/2.6.ht
https://pt.wikipedia.org/wiki/Python 13/14
14/03/2017 Python Wikipdia, a enciclopdia livre

33. Daniel G. Shafer (17 de janeiro de 2003).Python Documentao do Maya(em ingls). Autodesk.
Streamlines Space Shuttle Mission Design(http://ww Consultado em 18 de julho de 2008
w.python.org/about/success/usa/)(em ingls). Python 36. Python Scripts (http://wiki.blender.org/index.php/Ex
Software Foundation. Consultado em 11 de junho de tensions:Py/Scripts)(em ingls). Blender. Consultado
2008 em 18 de julho de 2008
34. Darryl K. Taft (5 de maro de 2005).Python Slithers 37. James Henstridge (16 de maio de 2006).GIMP
into Systems (http://www.eweek.com/c/a/Application Python Documentation(http://www.gimp.org/docs/py
-Development/Python-Slithers-into-Systems/)(em thon/index.html). Documentao do GIMP(em
ingls). eWEEK. Consultado em 11 de junho de 2008 ingls). GIMP. Consultado em 18 de julho de 2008
35. Introduction to Maya Python API(http://www.autod 38. Robin Rowe (1 de julho de 2002).Industrial Light &
esk.com/us/maya/docs/Maya85/wwhelp/wwhimpl/com Magic (http://www.linuxjournal.com/article/6011)
mon/html/wwhelp.htm?context=DeveloperResources& (em ingls). Linux Journal. Consultado em 18 de julho
file=Introduction_to_Maya_Python_API.html) . de 2008

Bibliografia
Pilgrim, Mark (2004). Dive into Python (http://diveintopython.net) (em ingls). 2 ed. Nova Iorque:
Apress. 413 pginas. ISBN 978-1-5905-9356-1
Pilgrim, Mark (2009). Dive into Python 3 (http://www.diveinto.org/python3/) (em ingls). 2 ed. Nova
Iorque: Apress. 360 pginas. ISBN 978-1-4302-2415-0
Menezes, Nilo Ney Coutinho (2010). Introduo Programao com Python. Ideal para quem nunca
teve contato com programao. So Paulo: Novatec. 224 pginas. ISBN 978-85-7522-250-8
Downey, Allen B. (2012). Think Python (http://shop.oreilly.com/product/0636920025696.do) (em
ingls). Sebastopol (Califrnia): O'Reilly. 300 pginas. ISBN 978-1-4493-3072-9
Lutz, Mark (2013). Learning Python (http://shop.oreilly.com/product/0636920028154.do) (em ingls). 5
ed. Sebastopol (Califrnia): O'Reilly. 1600 pginas. ISBN 978-1-4493-5573-9
Lutz, Mark (2010). Programming Python (http://shop.oreilly.com/product/9780596158118.do) (em
ingls). 4 ed. Sebastopol (Califrnia): O'Reilly. 1632 pginas. ISBN 978-0-596-15810-1
David Beazley e Brian K. Jones (2013). Python Cookbook (http://shop.oreilly.com/product/06369200270
72.do) (em ingls). 3 ed. Sebastopol (Califrnia): O'Reilly. 706 pginas. ISBN 978-1-4493-4037-7

Ligaes externas
Website oficial (https://www.python.org/) (em ingls)
Wiki da comunidade brasileira de usurios (http://www.python.org.br/)
Site da comunidade portuguesa de usurios (http://python.pt/)
Python (http://www.dmoz.org/Computers/Programming/Languages/Python/) no Open Directory Project

Obtida de "https://pt.wikipedia.org/w/index.php?title=Python&oldid=48138863"

Categorias: Linguagens de programao orientadas a objetos


Linguagens de programao baseadas em classes Linguagens de script Linguagens interpretadas
Compiladores e interpretadores livres Python Software livre
Linguagens de programao criadas em 1991

Esta pgina foi modificada pela ltima vez (s) 20h40min de 28 de fevereiro de 2017.
Este texto disponibilizado nos termos da licena Creative Commons - Atribuio - Compartilha Igual
3.0 No Adaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Para mais detalhes,
consulte as condies de uso.

https://pt.wikipedia.org/wiki/Python 14/14