Sei sulla pagina 1di 16

Python uma linguagem de programao de alto nvel

[4]
interpretada,
interativa, orientada a objetos e de tipagem dinmica e forte, lanada por Guido
van Rossum em !!"
[]
#tualmente possui um modelo de desenvolvimento
comunit$rio e aberto gerenciado pela organi%ao sem &ns lucrativos '(t)on
*oft+are ,oundation" #pesar de v$rias partes da linguagem possurem padr-es e
especi&ca-es formais, a linguagem como um todo no formalmente
especi&cada" . padro de facto a implementao /'(t)on"
# linguagem foi projetada com a &loso&a de enfati%ar a importncia do esforo do
programador sobre o esforo computacional" 'riori%a a legibilidade do c0digo sobre
a velocidade ou e1pressividade" /ombina uma sinta1e concisa e clara com os
recursos poderosos de suabiblioteca padro e
por m0dulos e frameworks desenvolvidos por terceiros"
. nome Python teve a sua origem no grupo )umorstico britnico 2ont( '(t)on
[3]
,
criador do programa Monty Python's Flying Circus, embora muitas pessoas faam
associao com o rptil do mesmo nome 4em portugu5s, 'ito6"
ria
Guido van Rossum, *o ,rancisco, /alif0rnia
'(t)on foi concebido no &nal de !7!
[4][3]
por Guido van Rossum no 8nstituto de
'es9uisa :acional para 2atem$tica e /i5ncia da /omputao 4/;86, nos 'ases
<ai1os, como um sucessor da #</ capa% de tratar e1ce-es e prover interface com
o sistema operacional #moeba
[=]
atravs de scripts" >ambm da /;8, a linguagem
#</ era mais produtiva 9ue /, ainda 9ue com o custo do desempen)o emtempo de
e1ecuo" 2as ela no possua funcionalidades importantes para a interao com o
sistema operacional, uma necessidade do grupo" ?m dos focos primordiais de
'(t)on era aumentar a produtividade do programador"
[3]
@m !!, Guido publicou o c0digo 4nomeado verso A"!"A6 no grupo de
discusso alt.sources"
[]
:essa verso j$ estavam presentesclasses com )erana,
tratamento de e1ce-es, fun-es e os tipos de dado nativos list, dict, str, e
assim por diante" >ambm estava presente nessa verso um sistema de m0dulos
emprestado do 2odulaBC" . modelo de e1ce-es tambm lembrava muito o do
2odulaBC, com a adio da opo else clause"
[=]
@m !!4 foi formado o principal
f0rum de discusso do '(t)on, comp"lang"p(t)on, um marco para o crescimento da
base de usu$rios da linguagem"
# verso "A foi lanada em janeiro de !!4" :ovas funcionalidades incluam
ferramentas para programao funcional comolambda, map,filter e reduce" #
Dltima verso en9uanto Guido estava na /;8 foi o '(t)on "E" @m !!3, ele
continuou o trabal)o no /:R8 em Reston,@stados ?nidos, de onde lanou diversas
vers-es" :a verso "4 a linguagem gan)ou parmetros nomeados 4a capacidade
de passar parmetro pelo nome e no pela posio na lista de parmetros6 e
suporte nativo a nDmeros comple1os, assim como uma forma de encapsulamento"
[F]
#inda na /:R8, Guido lanou a iniciativa Computer Programming for
Everybody 4/'4@G literalmente, H'rogramao de /omputadores para >odosH6, 9ue
visava tornar a programao mais acessvel, um projeto &nanciado pela I#R'#"
[7]
#tualmente o /'4@ encontraBse inativo"
@m EAAA, o time de desenvolvimento da linguagem se mudou para a <e.pen a&m
de formar o time '(t)onJabs" # /:R8 pediu 9ue a verso "= fosse lanada, para
marcar o &m de desenvolvimento da linguagem na9uele local" . Dnico lanamento
na <e.pen foi o '(t)on E"A, e ap0s o lanamento o grupo de desenvolvedores da
'(t)onJabs agrupouBse na Iigital /reations"
'(t)on E"A implementou list compre)ension, uma relevante funcionalidade de
linguagens funcionais como *@>J e KasLell" # sinta1e da linguagem para essa
construo bastante similar a de KasLell, e1ceto pela prefer5ncia do KasLell por
caaracteres de pontuao e da prefer5ncia do p(t)on por palavras
reservadas alfabticas" @ssa verso E"A tambm introdu%iu um sistema coletor de
li1o capa% de identi&car e tratar ciclos de refer5ncias"
[!]
M$ o "= incluiu uma licena /:R8 substancialmente mais longa 9ue a licena /;8
9ue estavam usando nas vers-es anteriores" @ntre outras mudanas, essa licena
inclua uma cl$usula atestando 9ue a licena era governada pelas leis da Nirgnia"
# ,ree *oft+are ,oundation alegou 9ue isso era incompatvel com a G:? G'J" >anto
<e.pen 9uanto /:R8 e ,*, negociaram uma mudana na licena livre do '(t)on
9ue o tornaria compatvel com a G'J" '(t)on "=" id5ntico ao "="A, e1ceto por
pe9uenas corre-es de fal)as e uma licena nova, compatvel com a G'J"
[A]
'(t)on E" era parecido com as vers-es "=" e E"A" *ua licena foi renomeada para
'(t)on *oft+are ,oundation Jicense" >odo c0digo, documentao e especi&cao
desde o lanamento da verso alfa da E" proprieade da '(t)on *oft+are
,oundation 4'*,6, uma organi%ao sem &ns lucrativos fundada em EAA, um
modelo tal 9ual da #pac)e *oft+are ,oundation"
[A]
. lanamento incluiu a mudana
na especi&cao para suportar escopo anin)ado, assim como outras linguagens
com escopo est$tico"
[]
@sta funcionalidade estava desativada por padro, e
somente foi re9uerida na verso E"E"
?ma grande inovao da verso E"E foi a uni&cao dos tipos '(t)on 4escritos
em /6 e classes 4escritas em '(t)on6 em somente uma )ierar9uia" 8sto tornou o
modelo de objetos do '(t)on consistentemente orientado a objeto"
[E]
>ambm foi
adicionado generator, inspirado em 8con"
[C]
. incremento da biblioteca padro e as escol)as sint$ticas foram fortemente
inOuenciadas por Mava em alguns casosP o pacote logging
[4]
introdu%ido na verso
E"C
[3]
, o analisador sint$tico *#Q, introdu%ido na verso E"A e a sinta1e de
decoradores 9ue usa @
[=]
, adicionadas na verso E"4"
[F]
#tualmente a linguagem usada em diversas $reas, como servidores de
aplicao e computao gr$&ca" @st$ disponvel como linguagem script em
aplica-es como .pen.Rce 4'(t)on ?:. <ridge6 e pode ser utili%ada
em procedimentos arma%enados no sistema gerenciador de banco de
dados 'ostgre*SJ 4'JT'(t)on6"
[editar]Desenvolvimento futuro
M$ e1istem planos para uma terceira verso da linguagem
[7]
, c)amada '(t)on C"A
ou '(t)on CAAA, 9ue 9uebrar$ a compatibilidade
[!]
com a famlia E"1 para corrigir
fal)as 9ue foram descobertas neste padro, e para limpar os e1cessos das vers-es
anteriores
[3]
" # primeira verso alfa foi lanada em C de agosto de EAAF, a segunda
em F de de%embro do mesmo ano e a verso &nal planejada para outubro
de EAA7"
8dias para a mudana da verso incluem a alterao da palavra reservada print,
9ue passa a ser uma funo, tornando mais f$cil a utili%ao de uma verso
alternativa de print" >ambm, a mudana para ?nicode de todas as cadeias de
caracteres"
[editar]Caractersticas
[editar]Construes
/onstru-es de '(t)on incluemP estrutura de seleo 4if, else, elif6G estrutura de
repetio 4for6, 9ue itera por um container, capturando cada elemento em uma
vari$vel local dadaGconstruo de classes 4class6G construo de subrotinas 4def6G
construo de escopo 4with6, como por e1emplo para ad9uirir um recurso"
[editar]Tipos de dado
# tipagem de '(t)on forte, pois os valores e objetos t5m tipos bem de&nidos e
no sofrem coer-es como em / ou 'erl" *o disponibili%ados diversos tipos de
dados nativosP
Tipo de dado Descrio Exemplo da sintaxe
str, unicode Uma cadeia de caracteres imutvel 'Wikipedia', u'Wikipedia'
list
Lista heterognea mutvel
[4.0, 'string', True]
tuple
Tupla imutvel
4.0, 'string', True!
set, fro"enset
Conjunto no ordenado, no contm
elementos duplicados
set[4.0, 'string', True]!
fro"enset[4.0, 'string',
True]!
dict
conjunto associativo
#'ke$%'& %.0, 'ke$''&
(alse)
int
Nmero de preciso fia,
transparentemente convertido
para long caso no cai!a em um int"
4'
'%4*4+,-4+.
float
#onto flutuante
,.%4%/0'*
comple1
Nmero compleo
,2'3
bool
$ooleano True ou (alse
'(t)on tambm permite a de&nio dos tipos de dados pr0prios, atravs classes"
8nstncias so construdas invocando a classe 4(oo4lass!6, e as classes so
instncia da classe t$pe, o 9ue permite metaprogramao e reOe1o" 2todos so
de&nidos como fun-es ane1adas U classe, e a
sinta1e inst5ncia.m6todoargumento! um atal)o
para 4lasse.m6todoinst5ncia, argumento!" .s mtodos devem referenciar
e1plicitamente a refer5ncia para o objeto sob forma de um dos argumentos, o
parmetro self
[EA]
"
[editar]Palavras reservadas
. '(t)on E"3"E de&ne as seguintes C palavras
reservadas
[E]
P and, del, from, not, while, as, elif, global, or, with, assert, else,
if, pass, $ield, break, e1cept, import, print, class, e1ec, in,raise, continue, f
inall$, is, return, def, for, lambda e tr$"
[editar]Operadores
.s operadores b$sicos de comparao como 77, 8, 97, entre outros so usados em
todos os tipos de dados, como nDmeros, cadeias de te1to, listas e mapeamentos"
/ompara-es em cadeia como a 8 b 8 c possuem o mesmo signi&cado b$sico 9ue
na matem$ticaP os termos so comparadas na ordem" V garantido 9ue o
processamento da e1presso l0gica ir$ terminar to cedo o veredito claro, o
princpio da avaliao mnima" ?sando a e1presso anterior, se a 8 b falso, c no
avaliado"
Suanto aos operadores l0gicos, at '(t)on E"E no )avia o tipo de dado booleano"
@m todas as vers-es da linguagem os operadores l0gicos
tratam ::, 0, ;one, 0.0, [] e #) como falso, en9uanto o restante tratado como
verdadeiro de modo geral" :a verso E"E" as constantes True e (alse foram
adicionadas 4subclasses de e A respectivamente6" # comparao bin$ria retorna
uma das duas constantes acima"
.s operadores booleanos and e or tambm seguem a avaliao mnima" 'or
e1emplo, $ 77 0 or 1<$ 9 %00 nunca lanar$ a e1ceo de diviso por %ero"
[editar]Interpretador interativo
. interpretador interativo uma caracterstica diferencial da linguagem, por9ue )$
a possibilidade de testar e modi&car o c0digo de um programa antes de iniciar
a compilao ou incluBlas nos programas, por e1emploP
#o incluir uma funo, o interpretador j$ nos gera o resultadoP
999 %2%
'
999
999 a 7 %2%
999 print a
'
[editar]n!lise l"#ica
@1emplo de script
:o segundo captulo do Manual de Referncia da inguagem Python citado 9ue
a an$lise l1ica uma an$lise do interpretador em si, os programas so lidos por
um analisador sint$tico 9ue divide o c0digo em tokens"
>odo programa dividido em lin)as l0gicas 9ue so separadas
pelo token !E"#!E ou !$%& #!'&, as lin)as fsicas so trec)os de c0digo
divididos pelo caractere E!(ER" Jin)as l0gicas no podem ultrapassar lin)as fsicas
com e1ceo de juno de lin)as, por e1emploP
if resultado 9 ' =
and % 87 / =
and ' 8 /
print '>esultado& ?f'! ? d!
ou
meses@do@ano 7 ['3aneiro', 'feAereiro', 'marBo',
'abril', 'maio', '3unho',
'3ulho', 'agosto', 'setembro',
'outubro', 'noAembro', 'de"embro']
'ara a delimitao de blocos de c0digos os delimitadores so colocados em
uma pil)a e diferenciados por sua indentao" 8niciando a pil)a com valor A 4%ero6 e
colocando valores maiores 9ue os anteriores na pil)a" 'ara cada comeo de lin)a, o
nvel de indentao comparado com o valor do topo da pil)a" *e o nDmero da
lin)a for igual ao topo da pil)a, a pil)a no alterada" *e o valor for maior a pil)a
recebe o nvel de indentao da lin)a e o nome #!)E!( 4empil)amento6 se o nvel
de indentao for menor, ento desempil)ado at c)egar a um nvel de
indentao recebendo o nome )E)E!( 4desempil)amento6 e se no encontrar
nen)um valor gerado um erro de indentao"
#bai1o um e1emplo de permutao, retirado do captulo E" sobre @strutura de
lin)as na #n$lise l1ica do 2anual de Refer5ncia da linguagem 4anguage
Reference Manual6P
def perml!& ;CDE .F;GE
F;HI;T if lenl! 87 %& ;CDE .F;GE
F;HI;T return[%] ;CDE .F;GE
HIHI;T r 7 [ ] ;CDE .F;GE
for i in rangelenl!!& ;CDE .F;GE
F;HI;T s 7 l[&i] 2 l[i2%&] ;CDE .F;GE
p 7 perms! ;CDE .F;GE
HIHI;T for 1 in p& ;CDE .F;GE
F;HI;T r.appendl[i&i2%]21! ;CDE .F;GE
HIHI;T return r
[editar]Indenta$o
'(t)on foi desenvolvido para ser uma linguagem de f$cil leitura, com um visual
agrad$vel, fre9uentemente usando palavras e no pontua-es como em outras
linguagens" 'ara a separao de blocos de c0digo, a linguagem usa espaos em
branco e indentao ao invs de delimitadores visuais como c)aves 4/, Mava6 ou
palavras 4<#*8/, ,ortran, 'ascal6" Iiferente de linguagens com delimitadores visuais
de blocos, em '(t)on a indentao obrigat0ria" . aumento da indentao indica o
incio de um novo bloco, 9ue termina da diminuio da endentao"
?sando um editor de te1to comum muito f$cil e1istir erros de endentao, o
recomendado con&gurar o editor conforme a an$lise l1ica do '(t)on ou utili%ar
uma 8I@" >odas as 8I@ 9ue suportam a linguagem fa%em endentao
automaticamente"
@1emploP
Indentao correta
def Aalor%!&
while True&
try&
c 7
intraw@input'Jrimeiro Dalor& '!!
return c
except DalueIrror&
print 'FnAKlidoL'
Indentao incorreta
def Aalor%!&
while True&
try&
c 7 intraw@input'Jrimeiro Dalor&
'!!
return c
except DalueIrror&
print 'FnAKlidoL'
. c0digo est$ correto para os dois e1emplos, mas o analisador l1ico veri&car$ se a
endentao est$ coerente" . analisador recon)ecer$ as palavras
reservadas def, tr$, e1cept, return,print e as cadeias de caracteres entre aspas
simples e a endentao, e se no )ouver problemas o programa e1ecutar$
normalmente, seno apresentar$ a e1ceoP H*eu programa est$ com erro no bloco
de indentaoH"
[editar]Compilador de %ytecode
# linguagem de altssimo nvel, como j$ dito, mas ela tambm pode compilar seus
programas para 9ue a pr01ima ve% 9ue o e1ecutar no precise compilar novamente
o programa, redu%indo o tempo de carga na e1ecuo"
?tili%ando o interpretador interativo no necess$rio a criao do ar9uivo de
'(t)on compilado, os comandos so e1ecutados interativamente" 'orm 9uando um
programa ou um m0dulo evocado, o interpretador reali%a a an$lise l1ica e
sint$tica, compila o c0digo de alto nvel se necess$rio e e1ecut$Blo na m$9uina
virtual da linguagem"
. bytecode arma%enado em ar9uivos com e1tenso .p$c ou .p$o, este Dltimo no
caso de bytecode otimi%ado" 8nteressante notar 9ue o bytecode da linguagem
tambm de alto nvel, ou seja, mais legvel aos seres )umanos 9ue o c0digo de
b(te do /, por e1emplo" 'ara descompilar um c0digo de b(te utili%ado o
m0dulo dis da biblioteca padro da linguagem e e1istem m0dulos de terceiros 9ue
tornam o bytecode mais confuso, tornando a descompilao ine&ca%"
:ormalmente, o '(t)on trabal)a com dois grupos de ar9uivosP
" .s m0dulos do nDcleo da linguagem, sua biblioteca padro e os m0dulos
independentes, criados pelo usu$rio"
E" :o nDcleo do interpretador e1iste o analisador l1ico, o analisador sint$tico
9ue utili%a Estruturas de $b*etos 4tempo de e1ecuo6, o /ompilador
9ue aloca mem+ria 4tempo de e1ecuo6 e depois do #valiador de c0digo
9ue modi&ca o estado atual do programa 4tempo de e1ecuo6, mostrando
resultado para o usu$rio"
[editar]Orienta$o a o%&eto
'(t)on suporta a maioria das tcnicas da programao orientada a objeto" Sual9uer
objeto pode ser usado para 9ual9uer tipo, e o c0digo funcionar$ en9uanto )aja
mtodos e atributos ade9uados" . conceito de objeto na linguagem bastante
abrangenteP classes, fun-es, nDmeros e m0dulos so todos considerados objetos"
>ambm )$ suporte para metaclasses,polimor&smo, e )erana 4inclusive )erana
mDltipla6" K$ um suporte limitado para vari$veis privadas"
:a verso E"E de '(t)on foi introdu%ido um novo estilo de classes em 9ue objetos e
tipos foram uni&cados, permitindo a especiali%ao de tipos" M$ a partir da verso
E"C foi introdu%ido um novo mtodo de resoluo de ambiguidades para )eranas
mDltiplas
[EE]
"
?ma classe de&nida com class nome&, e o c0digo seguinte a composio dos
atributos" >odos os mtodos da classe recebem uma refer5ncia a uma instncia da
pr0pria classe como seu primeiro argumento, e a conveno 9ue se c)ame este
argumento self" #ssim os mtodos so c)amados ob3eto.m6todoargumento%,
argumento', ...! e so de&nidos iguais a uma funo, como m6todoself,
argumento%, argumento', ...!" Neja 9ue o parmetro self conter$ uma
refer5ncia para a instncia da classe de&nida em ob3eto 9uando for efetuada esta
c)amada" .s atributos da classe podem ser acessados em 9ual9uer lugar da classe,
e os atributos de instncia 4ou vari$vel de instncia6 devem ser declarados dentro
dos mtodos utili%ando a refer5ncia U instncia atual 4self6" 4Ner um c0digo
conte1tuali%ado em ane1o"6
@m '(t)on no e1iste proteo dos membros duma classe ou instncia pelo
interpretador, o c)amado encapsulamento" /onvencionaBse 9ue atributos com o
nome comeando com um W so de uso privado da classe, mas no )$ um
policiamento do interpretador contra acesso a estes atributos" ?ma e1ceo so
nomes comeando com @@, no caso em 9ue o interpretador modi&ca o nome do
atributo" 4Ner um c0digo conte1tuali%ado em ane1o"6
'(t)on permite polimor&smo, 9ue condi% com a reutili%ao de c0digo" V fato 9ue
fun-es semel)antes em v$rias partes do soft+are sejam utili%adas v$rias ve%es,
ento de&nimos esta funo como uma biblioteca e todas as outras fun-es 9ue
precisarem desta a c)amam sem a necessidade de reescrev5Bla" 4Ner um c0digo
conte1tuali%ado em ane1o"6
[editar]Pro'rama$o funcional
?ma das constru-es funcionais de '(t)on compreenso de listas, uma forma de
construir listas" 'or e1emplo, podeBse usar a tcnica para calcular as cinco primeiras
pot5ncias de dois" . algoritmo ,uicksort tambm pode ser e1pressado usando a
mesma tcnica" 4Ner c0digos conte1tuali%ados para ambos os casos em ane1o"6
@m '(t)on, fun-es so objetos de primeira classe 9ue podem ser criados e
arma%enados dinamicamente" . suporte U fun-es anXnimas est$ na
construo lambda 4c$lculo Jambda6" :o )$ disponibilidade de fun-es anXnimas
de fato, pois os lambdas cont5m somente e1press-es e no blocos de c0digo"
'(t)on tambm suporta closure l1ico desde a verso E"E" 4Ner c0digos
conte1tuali%ados para ambos os casos em ane1o"6 M$ geradores foram introdu%idos
na verso E"E e &nali%ados na verso E"C, e representam o mecanismo de '(t)on
para a avaliao preguiosa de fun-es" 4Ner c0digos conte1tuali%ados para ambos
os casos em ane1o"6
[editar]Tratamento de e#cees
'(t)on suporta e fa% uso constante de tratamento de e1ce-es como uma forma de
testar condi-es de erro e outros eventos inesperados no programa" V inclusive
possvel capturar uma e1ceo causada por um erro de sinta1e" . estilo da
linguagem ap0ia o uso de e1ce-es sempre 9ue uma condio de erro pode
aparecer" 'or e1emplo, ao invs de testar a disponibilidade de acesso a um recurso,
a conveno simplesmente tentar usar o recurso e capturar a e1ceo caso o
acesso seja rejeitado 4recurso ine1istente, permisso de acesso insu&ciente, recurso
j$ em uso, """6"
@1ce-es so usadas fre9uentemente como uma estrutura de seleo, substituindo
blocos ifMelse, especialmente em situa-es 9ue involvem threads" ?ma
conveno de codi&cao o @#,', do ingl5s, H mais f$cil pedir perdo 9ue
permissoH" 8sso signi&ca 9ue em termos de desempen)o prefervel capturar
e1ce-es do 9ue testar atributos antes de os usar" *egue abai1o e1emplos de
c0digo 9ue testam atributos 4Hpedem permissoH6 e 9ue capturam e1ce-es
4Hpedem perdoH6P
Teste de atributo
if hasattrspam, 'eggs'!&
ham 7 spam.eggs
else&
handle@error!
Captura de exceo
try&
ham 7 spam.eggs
except EttributeIrror&
handle@error!
#mbos os c0digos produ%em o mesmo efeito, mas )$ diferenas de desempen)o"
Suando spam possui o atributo eggs, o c0digo 9ue captura e1ce-es mais r$pido"
/aso contr$rio, a captura da e1ceo representa uma perda consider$vel de
desempen)o, e o c0digo 9ue testa o atributo mais r$pido" :a maioria dos casos o
paradigma da captura de e1ce-es mais r$pido, e tambm pode evitar problemas
de concorr5ncia
[EC]
" 'or e1emplo, num ambiente multitarefa, o espao de tempo
entre o teste do atributo e seu uso de fato pode invalidar o atributo, problema 9ue
no acontece no caso da captura de e1ce-es"
[editar](i%lioteca padr$o
'(t)on possui uma grande biblioteca padro, geralmente citada como um dos
maiores triunfos da linguagem,
[E4]
fornecendo ferramentas para diversas tarefas"
Recentemente, a biblioteca <oost do /YY incluiu uma biblioteca para permitir a
interoperabilidade entre as duas linguagens" 'or conta da grande variedade de
ferramentas fornecida pela biblioteca padro, combinada com a a )abilidade de
usar linguagens de nvel mais bai1o como / e /YY, '(t)on pode ser poderosa para
conectar componentes diversos de soft+are"
# biblioteca padro conta com facilidades para escrever aplica-es para a 8nternet,
contando com diversos formatos e protocolos como 282@ e K>>'" >ambm )$
m0dulos para criarinterfaces gr$&cas, conectar em bancos e dados relacionais e
manipular e1press-es regulares"
#lgumas partes da biblioteca so cobertas por especi&ca-es 4por e1emplo, a
implementao ;*G8 da wsgiref segue o '@' CCC
[E3]
6, mas a maioria dos m0dulos
no segue"
[editar]Coment!rios
'(t)on fornece duas alternativas para documentar o c0digo" # primeira o uso de
coment$rios para indicar o 9ue certo c0digo fa%" /oment$rios comeam com N e
so terminados pela 9uebra da lin)a" :o )$ suporte para coment$rios 9ue se
estendem por mais de uma lin)aG cada lin)a consecutiva de coment$rio deve
indicar N" # segunda alternativa o uso de cadeias de caractere, literais de te1to
inseridos no c0digo sem atribuio" /adeias de caracteres em '(t)on so
delimitadas por : ou ' para Dnica lin)a e por ::: ou ''' para mDltiplas lin)as"
@ntretanto, conveno usar o mtodos de mDltiplas lin)as em ambos os casos"
Iiferente de coment$rios, a cadeias de caracteres usadas como documentao so
objetos '(t)on e fa%em parte do c0digo interpretado" 8sso signi&ca 9ue um
programa pode acessar sua pr0pria documentao e manipular a informao" K$
ferramentas 9ue e1traem automaticamente essa documentao para a gerao da
documentao de #'8 a partir do c0digo" Iocumentao atravs de cadeias de
caracteres tambm pode ser acessada a partir do interpretador atravs da
funo help!"
[editar]Plataformas disponveis
# linguagem e seu interpretador esto disponveis para as mais
diversas plataformas, desde ?ni1 4Jinu1, ,ree<*I, *olaris, 2ac.* Q,
etc"6, ;indo+s, ":@>, vers-es antigas de 2ac.*at consoles de jogos eletrXnicos ou
mesmo alguns celulares, como a srie =A da :oLia e palmtops"
'ara algum sistema operacional no suportado, basta 9ue e1ista um
compilador / disponvel e gerar o '(t)on a partir do fonte" . c0digo fonte
tradu%ido pelo interpretador para o formatobytecode, 9ue multiplataforma e pode
ser e1ecutado e distribudo sem fonte original"
[editar]Implementaes
# implementao original e mais con)ecida do '(t)on o CPython, escrita em / e
compatvel com o padro /7!,
[E=]
sendo distribuda com uma grande biblioteca
padro escrita em um misto de '(t)on e /" @sta implementao suportada em
diversas plataformas, incluindo 2icrosoft ;indo+s e sistemas ?ni1BliLe modernos"
*tacLless '(t)on uma variao do /'(t)on 9ue
implementa microt)reads 4permitindo multitarefa sem o uso de t)reads6, sendo
suportada em 9uase todas as plataformas 9ue a implementao original"
@1istem tambm implementa-es para plataformas j$ e1istentesP M(t)on para
a 'lataforma Mava e 8ron'(t)on para ":@>"
@m EAA3 a :oLia lanou um interpretador '(t)on para os telefones celulares *=A,
c)amado '(*=A" @ssa verso inclui v$rios m0dulos das implementa-es
tradicionais, mas tambm alguns m0dulos adicionais para a integrao com o
sistema operacional *(mbian" ?ma implementao para 'alm pode ser encontrada
no 'ipp(" M$ o '('(, a linguagem '(t)on totalmente escrita em '(t)on"
Iiversas implementa-es, como /'(t)on, pode funcionar como um interpretador de
comandos em 9ue o usu$rio e1ecuta as instru-es se9uencialmente, recebendo o
resultado automaticamente" # e1ecuo compilada do c0digo oferece um gan)o
substancial em velocidade, com o custo da perda da interatividade"
[editar])icena
'(t)on possui uma licena livre aprovada pela .*8 e compatvel com a G'J, porm
menos restritiva" @la prev5 4entre outras coisas6 9ue bin$rios da linguagem sejam
distribudos sem a necessidade de fornecer o c0digo fonte junto
[EF]
"
[editar]*dulos e frameworks
#o longo do tempo t5m sido desenvolvidos pela comunidade de programadores
muitas bibliotecas de fun-es especiali%adas 4m0dulos6 9ue permitem e1pandir as
capacidades base da linguagem" @ntre estes m0dulos especiali%ados destacamBseP
Descrio Campos de atuao
%jango
Framework para desenvolvimento gil de
aplica&'es (e!)
desenvolvimento (e!
Tur!o*ears
Framework !aseado em vrias outras
tecnologias eistentes no mundo +ue gira
em torno da linguagem #,thon)
desenvolvimento (e!
-atplotli! . !i!lioteca para manipula&o de grficos /%) processamento de imagem
-atplotli! 0
#,la!
#,thon
1maging
Li!rar,
!i!lioteca para manipula&o de imagens
digitais)
processamento de imagem
#,2pen*L .
#,thon
2pen*L
$inding
suporte multiplataforma ao 2pen*L) computa&o grfica
#,game
Conjunto de m3dulos para
o desenvolvimento de jogos, incluindo
grficos 4%L)
desenvolvimento de
jogos) computa&o grfica
T(isted
Framework para o desenvolvimento de
aplica&'es de rede" 1nclui m3dulos
para servidor (e!, de aplica&o, 445 e
diversos outrosprotocolos)
desenvolvimento de
soft(are) desenvolvimento
(e!
#672 . Pyth
on Remote
Objects
Framework para o desenvolvimento
de sistemas distri!u8dos)
computa&o distri!u8da
92%$
4istema de persistncia e !anco de dados
orientado a o!jetos)
!anco de dados
Cherr,#, Framework para aplica&'es (e!) desenvolvimento (e!
:isual #,thon Framework ;% de alto n8vel) computa&o grfica
4<L2!ject
-apeador o!jeto.relacional= tradu>
estruturas relacionais para o!jetos #,thon e
manipula o !anco de dados de forma
transparente)
!anco de dados
Numarra, -3dulo para manipula&o de vetores computa&o cient8fica
e computa&o cientif8ca"
[editar]Interfaces 'r!+cas
@1emplos de bibliotecas de G?8 disponveis para '(t)on incluemP
Descrio
T?inter -3dulo padro para *U1 no #,thon
#,*T@ interface para a !i!lioteca *T@
#,<T interface para a !i!lioteca <T
(#,thon interface para a !i!lioteca (Aidgets
Aa Constru8do para simplificar o uso do (#,thon
[editar]m%ientes de desenvolvimento inte'rado
@1istem v$rios ambientes de desenvolvimento integrado 48I@6 disponveis para
'(t)onP
Desenvolvedor
ltima
verso
Platforma Toolkit Licena
Boa
Constructor
Team B"C"D 1ndependente (#,thon *#L
Eric Pyton
IDE
%etlev 2ffen!ach E"D"/ 1ndependente <t *#L
!eany Team B"D; 1ndependente *T@/ *#L
IDLE *uido van
7ossum et al"
D"/"D 0 DF
de a!ril de
1ndependente T?inter
/BBG
IronPyton
"tudio
Clarius La!s
D"B 0 DB de
de>em!ro
de /BBG
Aindo(s
:4/BBF 4hell
7untime
-icrosoft
#u!lic
License
#omodo Hctive4tate
E"D"D 0
junho de
/BBG
multiplataforma #lataforma -o>illa #ropretrio
PyDev $Eclipse% Ia!io 9adro>n, D";"D; multiplataforma J#L
PytonCard multiplataforma (#,thon
Py"cripter mmm.eperts
D"G"/ 0
outu!ro de
/BBC
Aindo(s -1T
"tani&s Pyton
Editor
4tani
B"F"Ec 0 DE
de
fevereiro
de /BBF
1ndependente (#,thon *#L
'in( IDE Aing(are
;"B"/.D 0
/G de
novem!ro
de /BBG
Aindo(s, Linu, 24
K
#,*T@ #ropretrio
[editar]plicaes
#lguns dos maiores projetos 9ue utili%am '(t)on so o servidor de aplicao Zope,
o compartil)ador de ar9uivos 2net, o stio [ou>ube e o cliente original do <it>orrent"
Grandes organi%a-es 9ue usam a linguagem incluem Google
[E7]
4parte
dos crawlers6, [a)oo\ 4para o stio de grupos de usu$rios6 e :#*#"
[E!]
. sistema de
gerenciamento de reservas da #ir /anada tambm usa '(t)on em alguns de seus
componentes"
[CA]
# linguagem tambm tem bastante uso na indDstria da segurana
da informao"
# linguagem tem sido embarcada como linguagem de script em diversos soft+ares,
como em programas de edio tridimensional como 2a(a
[C]
, *oftimage
Q*8, >rue*pace e <lender
[CE]
" 'rogramas de edio de imagem tambm a usam para
scripts, como o G82'
[CC]
" 'ara diversos sistema operacionais a linguagem j$ um
componente padro, estando disponvel em diversas distribui-es Jinu1" . Red Kat
Jinu1 usa '(t)on para instalao, con&gurao e gerenciamento de pacotes"
.utros e1emplos incluem o 'lone, sistema de gerenciamento de
conteDdo desenvolvido em '(t)on e Zope e a 8ndustrial Jig)t ] 2agic
[C4]
, 9ue
produ% &lmes da srie -tar "ars usando e1tensivamente '(t)on para a computao
gr$&ca nos processos de produo dos &lmes"

Potrebbero piacerti anche