P. 1
Python PT BR

Python PT BR

|Views: 3|Likes:
Published by montgomery999

More info:

Published by: montgomery999 on Dec 04, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/29/2015

pdf

text

original

Curso de Python

25/03/10

Rudson R. Alves Mestre em Física
Prof. na UVV http://rra.etc.br

Introdução
Esta apresentação é baseada no material: Python na Prática: Um curso objetivo de programação em Python de Christian Robottom Reis: http://www.async.com.br/projects/python/pnp/ Tutorial Python de Guido van Rossum criador do !ython

2

Cronograma
" #ue é Python !or #ue Python Python $%sico Estruturas de Controle E&ceç'es (unç'es Escopo de )ari%veis (unç'es !ré*de+inidas Docstrings ,anipulação de -r#uivos "rientação a "bjetos .mportando ,/dulos
3

int main () { cout << "Hello World! \n"..c -o hello $ .O que é Python: Linguagem interpretada Classi+icação das lin0ua0ens: compilada interpretada Compiladas: Fortran C C "asic . return 0. } $ gcc hello../hello Hello World 4 . !isual #include <iostream> using namespace std.

. $ python hello.O que é Python: Linguagem interpretada Interpretadas: Python Perl "asic tradicional #hell #cript ..py Hello World 5 .

6 .O que é Python: Tipagem dinâmica Python possui o #ue se chama de tipagem dinâmica ou seja a tipa0em pode mudar a cada nova entrada de dados em uma vari%vel.tipa0em din1mica redu2 a #uantidade de tempo de planejamento prévio e é um mecanismos importante para 0arantir +le&ibilidade e simplicidade das +unç'es Python. >>> a = 1 >>> type(a) <type 'int'> >>> a = 'abacaxi' >>> type(a) <type 'str'> >>> a = 1. >>> type(a) <type '!loat'> .

delimitação é +eita pela indentação: print "# $alor de a % " i! a == & print "'ero( a = "'ero( else& print a exit() .sto 0arante #ue o c/di0o seja sempre le03vel.O que é Python: Delimitação por indentação Em Python não e&iste um delimitador espec3+ico para blocos de c/di0o. . 7 .

+ /+ 0. Em Python uma lista ainda podem arma2enar todo tipo de valores. 1 >>> type(a)21) <type '!loat'> 8 . >>> a = )"*(+ ".+ /+ 0..O que é Python: Tipos de alto n !el -lém dos tipos b%sicos 4inteiro ponto +lutuante .5 o Python possui ainda outros tipos de mais alto n3vel: Listas "#: como um vetor em outras lin0ua0ens lista é um conjunto de valores acessados por um 3ndice numérico inteiro iniciado por 2ero..'+ '-'+ 1+ .(+ "-(+ 1+ . >>> a )'*'+ '. 1 >>> print a) 1 * >>> a)21 0.

conhecidos como arrays associativos.nst1ncias são e&press'es concretas destas classes. . Dicion$rios: dicion%rios são se#67ncias #ue podem utili2ar 3ndices 4imut%veis5 de tipos variados. Este tipo permite #ue o ar#uivo seja +acilmente lido alterado e escrito. Classess e Instâncias: classes são estruturas especiais #ue servem para apoiar pro0ramação orientada a objetos. Strings: string em Python é uma se#67ncia imut%vel alocada dinamicamente e sem restrição de tamanho.O que é Python: Tipos de alto n !el Tuplas: Tuplas são se#67ncias de elementos arbitr%rios como listas com a e&ceção de #ue são imut$!eis. %rqui!o: Python possui um tipo pré*de+inido para manipular ar#uivos. .

" comando dir4vari%vel5 mostra os métodos dispon3veis. >>> dir(<1=<) > 9%todos da string constante "1=( )'??add??'+ '??class??'+ '??contains??'+ '??delattr??'+ '??doc??'+ '??e@??'+ '??ge??'+ '??getattrib4te??'+ '??getite9??'+ '??getneAargs??'+ '??getslice??'+ '??gt??'+ '??hash??'+ '??init??'+ '??le??'+ '??len??'+ '??lt??'+ '??9od??'+ '??94l??'+ '??ne??'+ '??neA??'+ '??red4ce??'+ '??red4ce?ex??'+ '??repr??'+ '??r9od??'+ '??r94l??'+ '??setattr??'+ '??str??'+ 'capitali'e'+ 'center'+ 'co4nt'+ 'decode'+ 'encode'+ 'endsAith'+ 'expandtabs'+ '!ind'+ 'index'+ 'isaln49'+ 'isalpha'+ 'isdigit'+ 'isloAer'+ 'isspace'+ 'istitle'+ 'is4pper'+ '3oin'+ 'l34st'+ 'loAer'+ 'lstrip'+ 'partition'+ 'replace'+ 'r!ind'+ 'rindex'+ 'r34st'+ 'rpartition'+ 'rsplit'+ 'rstrip'+ 'split'+ 'splitlines'+ 'startsAith'+ 'strip'+ 'sAapcase'+ 'title'+ 'translate'+ '4pper'+ ''!ill'1 !" .O que é Python: Orientação a O&'etos Em Python todos os dados podem ser considerados objetos. são todos objetos. !or e&emplo toda string possui o método upper: >>> a = 'laran3a' >>> a...4pper() '-*:*5.4pper() '5*6*78*' >>> 'ca9aleao'.*#' 8a mesma +orma inteiros ponto +lutuante tuplas dicion%rios listas .

Por que Python Como e&iste muitas lin0ua0ens di+erentes por #ue aprender Python9 "s conceitos +undamentais da lin0ua0em são simples de entender: .< c/di0o curto e r%pido desenvolvimento: !! .sinta&e do Python é clara e +%cil de aprender: "s tipos pré*de+inidos em Python são poderosos e simples de usar: " interpretador Python permite aprender e testar rapidamente trechos de c/di0o Python é e&pressivo com abstraç'es de alto n3vel .

!2 . Python é livre.Por que Python E&iste suporte para uma diversidade 0rande de bibliotecas 4$t %T& 'eb db .5: > +%cil escrever e&tens'es para Python em C e C #uando +or necess%rio desempenho m%&imo ou #uando necessitar de inter+acear al0uma +erramenta nestas lin0ua0ens: Python permite #ue o pro0rama e&ecute em m=ltiplas plata+ormas sem alteraç'es: !ossui tratamento de e&ceç'es 4moderno mecanismo de tratamento de erros5: Python é orientado a objetos 4incluindo herança m=ltiplas5...

Python ($sico ?esta seção ser% abordado aspectos essenciais da lin0ua0em como tipos operadores e estruturas. Coment%rios em Python se0uem a mesma estrutura dos coment%rios em bash script: >>> > isto 49 co9entBrio !3 .

1 on lin4x.=1&=0D2/+ Eep 0 . F+ 1G& &1G) )H-..A são os prompts do Python.. .mensa0em #ue ir% aparecer deve ser bem parecida com a mensa0em acima a menos das vers'es do Python e do %CC.=. .1 (r. >>> .Python ($sico: O interpretador Python " Python permite e&ecutar comandos diretamente através de seu interpretador ou uma lista de comandos arma2enada em um ar#uivo 4pro0rama em Python5 !ara chamar o interpretador Python apenas di0ite @pythonA no prompt do shell: $ python Cython . !4 .0. @>>>A e @. Iype <help<+ <copyright<+ <credits< or <license< !or 9ore in!or9ation.1.

Python ($sico: O interpretador Python . " mesmo poderia ter sido +eito com os comandos abai&o: >>> a = "Hello World( >>> print a Hello World >>> print "Hello World( Hello World >>> "Hello World( 'Hello World' !5 .antendo a tradição vamos +a2er o ()ello *orld+ >>> a = "Hello( >>> b = "World( >>> print a+ b Hello World "bserve #ue o comando print insere um espaço automaticamente entre as duas vari%veis.

Python ($sico: Criando um programa Python " mesmo pode ser +eito através da criação de um m/dulo 4como são chamados os pro0ramas em Python5.py a = "Hello( b = "World( print a+ b Balve o pro0rama com o nome hello. Em um editor de sua escolha escreva: > Cri9eiro progra9a Cython& hello.py e e&ecute*o chamando o interpretador: $ python hello.py Hello World $ ? !6 .

!ara isto acrescente o path dele no in3cio pro0rama e o torne e&ecut%vel: >J/4sr/bin/python > Cri9eiro progra9a Cython& hello.py a = "Hello( b = "World( print a+ b $ ch9od Kx hello.Python ($sico: Criando um programa Python " interpretador pode ser chamado automaticamente pelo sistema./hello.py Hello World $ ? Be tiver d=vidas #uando a locali2ação do interpretador Python use o comando: which python !7 .py $ .

/ola./ola. !ara adicionar suporte aos caracteres acentuados adicione a linha abai&o ao in3cio do seu pro0rama: #-*.Python ($sico: Criando um programa Python Cma versão em portu0u7s pode tra2er al0umas surpresas: >J/4sr/bin/python > Cri9eiro progra9a Cython& ola.py on line /+ b4t no encoding declaredO see http&//AAA.py a = "#lB( b = ":4ndo( print a+ b $ ./ola.coding: iso-8859-1 -*!8 ..python.2/.sto ocorre por conta do acento no D"l%D passado E vari%vel a.rror& 7on-*E-MM character 'Nxe1' in !ile .py<+ line / Eyntax.py Lile <.ht9l !or details $ ? .org/peps/pep.

py #lB :4ndo $ ? ! .coding& iso-DD=G-1 -P> Cri9eiro progra9a Cython& ola./ola.py a = "#lB( b = ":4ndo( print a+ b $ .Python ($sico: Criando um programa Python " pro0rama deve +icar assim: >J/4sr/bin/python >-P.

Este tipos suportam as operaç'es matem%ticas b%sicas.5...= a "b( 49 inteiro e 49 ponto !l4t4ante booleano co9plexo > res4ltado e9 ponto !l4t4ante > res4ltado inteiro > res4ltado co9plexo > 9ostra a tipage9 da $ariB$el 2" .= >>> >>> c = Ir4e >>> ' = / K 03 >>> >>> a K b /.= >>> int(a K b) / >>> b P ' (F.=K1 3) >>> type(') <type 'co9plex'> > > > > atrib4i 1 a "a( e .Python ($sico: Tipos numéricos " Python possui al0uns tipos numéricos pré*de+inidos: inteiros 4int5 ponto +lutuante 4-loat5 booleanos 4bool5 e comple&os 4comple. >>> a+ b = 1+ .

..= >>> =P. .@ >>> =/. >>> =/.IJ cujo a representação decimal no computadores é limitada.1/ 1 ..20GGGGGGGGGGGG > res4ltado inteiro > res4ltado ponto !l4t4ante > res4ltado ponto !l4t4ante Especial atenção aos n=meros como H..== Cm n=mero real deve possuir um ponto @. 2! .Python ($sico: Tipos numéricos Python também trabalha com base octal 4FGG5 e he&adecimal 4F&GG5 >>> a = 1 >>> a D >>> xLL .

//////////////0 >>> type(?) > $eri!ica o tipo do res4ltado ant.i9ag 0. >>> a.///////////////G >>> ?K. <type '!loat'> Kipa0em din1mica: >>> a = / >>> type(a) <type 'int'> >>> a = /. 22 . >>> abs(a) =. ao res4ltado anterior 1 .real /.Python ($sico: Tipos numéricos Python como uma calculadora e mais operaç'es: >>> . > res4ltado ponto !l4t4ante D..=//. > adiciona .101= >>> type(a) <type '!loat'> >>> a = "isto e' 49a string( >>> type(a) <type 'str'> >>> a = / K 03 >>> type(a) <type 'co9plex'> >>> a.

=+'si9one' 1 >>> listas = ) n49eros+ no9es+ 9isto 1 >>> print listas ))1+ . Cma lista pode conter #ual#uer tipo de valor incluindo valores de tipos mistos: >>> n49eros = )1+ .Python ($sico: Listas "# Lista é uma se#67ncia de valores inde&adas por um inteiro.+ /1+ )'alberto'+ 'carlos'+ 'si9one'1+ )1+ .+/. + 'alberto'+ 'carlos'+ /.+ /1 >>> listas)11 )'alberto'+ 'carlos'+ 'si9one'1 >>> listas)11)11 'carlos' 23 .+ /.=+ 'si9one'11 "s elementos da lista podem ser acessados por meio de 3ndices #ue vão de F até o comprimento da lista*I: >>> len(n49eros)-1 . +'alberto'+'carlos'+/.+ /1 >>> no9es = ) 'alberto'+ 'carlos'+ 'si9one' 1 >>> 9isto = ) 1+. >>> n49eros) 1 1 >>> n49eros).1 / >>> listas) 1 )1+ .

1 . > Qlti9o $alor > o penQlti9o $alor (atias ou slices de uma lista podem ser 0eradas +acilmente com o @:A >>> n = ) 1+ .+ /+ 0+ =+ 2+ F+ D+ G+ >>> n).Python ($sico: Listas "# ) seleç*es Python também permite acessar uma lista de tr%s para +rente identi+icando o 3ndice por um sinal de menos: >>> n49eros)-11 / >>> n49eros)-.&01 )/+ 01 >>> n)2&1 ) F+ D+ G+ 1 >>> n)-=&-11 )2+ F+ D+ G1 1 24 .

append( ) n49eros .+ /1 >>> >>> )/+ >>> n49eros.sort() n49eros 1+ .+ /+ 1 n49eros. + 'append'+ 'co4nt'+ 'extend'+ 'index'+ 'insert'+ 'pop'+ 're9o$e'+ 're$erse'+ 'sort'1 25 ..+ 1+ 1 n49eros.+ 11 !ara conhecer todos os métodos de um objeto utili2e o comando dir/objeto0 >>> dir(n49eros) )'??add??'+ '??class??'+ '??contains??'+ '??delattr??'+ '??delite9??'+ '??delslice??'+ '??doc??'+ '??e@??'+ '??ge??'+ '??getattrib4te??'+ '??getite9??'+ '??getslice??'+ '??gt??'+ '??hash??'+ '??iadd??'+ .Python ($sico: Listas "# ) métodos Como +oi dito anteriormente em Python tudo é um objeto.pop() >>> n49eros )/+ .. )amos ver al0uns métodos de uma lista: >>> >>> )1+ >>> >>> ) + >>> n49eros.re$erse() n49eros .

index(=) / >>> >>> >>> )1+ >>> / >>> )1+ >>> )2+ n.+ /+ 0+ =+ =+ =+ 21 n.sort()O n .+ 'galo'+ /+ =+ 21 >>> n.pop()O n.append(=) n.+ /+ =+ =+ 0+ =+ 21 n.) 'barco' 'galo' >>> n.insert(.+'galo')O n )1+ .append('barco')O n )1+ .extend(9) n .+ /+ 0+ =+ 21 >>> n.pop(.+ 'galo'+ /+ =+ 2+ 'barco'1 >>> n.extend(9)O n )1+ .+ /1 >>> 9 = ) 0+ =+ 21 >>> n.+ 11 26 .co4nt(=) n.re$erse()O n =+ =+ =+ 0+ /+ .re9o$e(0)O n )1+ .Python ($sico: Listas "# ) métodos "utros métodos de listas: >>> n = ) 1+ .+ 'galo'+ /+ 0+ =+ 21 >>> n.

+/) t .rror& 't4ple' ob3ect does not s4pport ite9 assign9ent 27 .Python ($sico: Tuplas +.+ /1 >>> >>> (1+ >>> 1 Kupla t = (1+.+/1 >>> n )1+ . Lista >>> n = )1+. Tuplas são como listas um conjunto de elementos acess3veis por um 3ndice inteiro.+ /1 >>> n) 1='laran3a'O n )'laran3a'+ .+ /) t) 1 ?o entanto tuplas são imut%veis >>> t) 1='laran3a' IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> Iype.

>>> a = 'abcde!ghi3' >>> a) 1 'a' >>> a)-11 '3' >>> a)2&1 'ghi3' >>> len(a) 1 >>> a.-S.??len??() 1 >>> a.Python ($sico: -trings #tring é uma se#67ncia imut%vel com o prop/sito especial de arma2enar cadeias de caracteres.LHHM8' )oc7 não conse0ue alterar um elemento da string >>> a)11='.rror& 'str' ob3ect does not s4pport ite9 assign9ent 28 .' IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> Iype.4pper() '*.

4pper() >>> print c *.-S.LHHM8T5:7#CU6EI 2 .Python ($sico: -trings . algumas operaç*es Colar strin0s 4M5 >>> b = 'Rl9nop@rst' >>> a K b 'abcde!ghi3Rl9nop@rst' >>> print a+ b abcde!ghi3 Rl9nop@rst >>> c = (a K b).

1.has?Rey('alberto') Lalse .GD)1 >>> tele!ones.+ "!ernanda( & DD.1+ /0 .1+ "patricia( & /0 .GD W >>> print tele!ones)"!ernanda(1 DD....Reys() )'pedro'+ 'patricia'+ '!ernanda'1 >>> tele!ones...1.1....Python ($sico: Dicion$rios /0 Cm dicion%rio é uma coleção de elementos onde é poss3vel utili2ar um 3ndice de #ual#uer tipo imut%vel.+ DD.$al4es() )//..ite9s() )('pedro'+ //.)+ 3" ......1)+ ('patricia'+ /0 ('!ernanda'+ DD. >>> tele!ones = V "pedro( & //.GD -l0uns métodos de dicion%rios: >>> tele!ones..1.GD1 >>> tele!ones.1.1.

.0 >>> D PP .. 20 > adiXYo > s4btraXYo > resto da di$isYo > di$isYo inteira > di$isYo e9 ponto !l4t4ante > prod4to > exponenciaXYo 3! .Python ($sico: Operadores ) aritméticos >>> F K / 1 >>> F Z / 0 >>> D [ / .222222222222222= >>> D P / . >>> D / /. >>> D / / .

+ /+ 0+ =+ 2) 32 .Python ($sico: Operadores ) aritméticos #trings >>> a = 'bits' >>> a P . 'bitsbits' >>> print '20 ' K a 20 bits >>> >>> >>> )G+ >>> )=+ Listas a = )=+ 2+ F+ D1 b = )G+ 1 1 print b P .+ /+ 0) >>> print a K (=+ 2) (. 1 + G+ 1 1 print a K b 2+ F+ D+ G+ 1 1 Tuplas >>> a = (.

a = x1L b = x 1 print a+ b 1 a \ b a ] b b << 0 a >> 0 ^a > e > o4 > 0 desloca9entos para a es@4erda > 0 desloca9entos para a direita > in$ersYo e9 co9ple9ento de . 33 .Python ($sico: Operadores ) &its Cadeias de bits >>> >>> >>> /1+ >>> 1 >>> /1 >>> 12 >>> 1 >>> -/.

Python ($sico: %tri&uição e condicionais >>> >>> >>> . b . >>> >>> . Ir4e >>> . aMb <<< a .=ltima atribuição é o mesmo #ue +a2er: <<< b . Lalse >>> . Ir4e >>> / Ir4e == 0 J= 0 > 0 < 0 <= a 34 . print a a+ b = /+ = a+ b = b+ aKb print a+ b -tribuição condicionada * Python H. >>> >>> 1 >>> >>> >>> = D a = 1 a K= 1 print a a P= 1 print a a /= .N >>> a+ b = =+ / >>> c = a i! a > b else b >>> print c = Condicionais: "ooleano >>> . Lalse >>> .

. >>> no9e = 'pedro' >>> idade = .= Ir4e >>> len(no9e) < 1 and idade > / Lalse >>> len(no9e) < 1 or idade > / Ir4e 35 .ais operadores.Python ($sico: Com&inação de operadores >>> a+ b = =+ /O a+ b (=+ /) >>> < a < b Lalse >>> < a > b Ir4e > a$aliaXYo % !eita da es@4erda > para a direita ..= >>> no9e == 'pedro' and idade == .

' ) ) condiXYo 1 Be a condição +or: verdadeira: Dstrin0OHD +alsa: Dstrin0OID >>> pedro?age = 1= >>> 3ose?age = .. >>> ("Cedro(+ "8ose() ) pedro?age > 3ose?age 1 'Cedro' >>> pedro?age = .. ( 'string?1'+ 'string?..Python ($sico: Com&inação de operadores .4tton& print <[s Aas toggled [s< [ (data+ (<#LL<+ <#7<))Aidget.ais uma condicional..= >>> ("Cedro(+ "8ose() ) pedro?age > 3ose?age 1 '8ose' > e9 49 progra9a pygtR Z para testar 49 Ioggle.get?acti$e()1) 36 ..

D/ Iotal de itens& 1 -4sto& ./..=.0=) -liente& *lberto+ _alor& [=.=..!< [ (<*lberto<+ _alor& .0= 37 .=.D/ >>> print <Nn-liente& [s+ . 1 Bubstituição em strings: operador P >>> print "Nn7o9e& [s( [ "6oberta( 7o9e& 6oberta >>> a = "Iotal de itens& [d( >>> b = "-4sto& [=.!( >>> print a [ 1 O print b [ .Python ($sico: Operadores .

2struturas de Controle: i3 .. print "a % 9aior @4e b( . print "a % ig4al a b( ... c = "ig4al( ... c = "9aior( .. c = "9enor( .. print "a % 9enor @4e b( .... eli! a == b& . else& > co9andos .... >>> a = =O b = D >>> i! a > b& .estrutura condicional i. else& .......usa a sinta&e abai&o: i! condiXYo& > co9andos .... 38 .. eli! condiXYo& > co9andos . a < b >>> print a+c+b = 9enor D "bserve #ue #uem delimita o bloco é a indentação..

>>> lista = ) "pedra(+ 1. / 0 3 ..+ =0....=2 (/K=3) >>> !or i in range(1+=)& .=2+ / K =3 1 >>> !or ite9 in lista& . print i+ 1 .. Ele percorre uma se#67ncia de elementos: !or $ariB$el in se@`ancia& > co9andos .. print ite9 pedra 1.2struturas de Controle: 3or " laço +or do Python é semelhante ao +or do bash. =0.

2struturas de Controle: 3or >>> dict = V"batata(& = + "abbbora(& 1.s& [/d( [ ( a+ len(a)) ... + "cebola(& D >>> !or e in dict.. print "Mte9& [Ds Ceso& [Ds( [ (e+ dict)e1) ...Reys()& . Mte9& batata Ceso& = Mte9& abbbora Ceso& 1. gato& 0 3ag4atirica& 11 sala9andra& 1 ran& / 4" ... Mte9& cebola Ceso& D W >>> ani9ais = )"gato(+ "3ag4atirica(+ "sala9andra(+ "ran(1 >>> !or a in ani9ais& . print "[1..

print "7enh49 negati$o encontrado( .. Bua sinta&e completa tem a +orma: !or $ariB$el in se@`ancia& > bloco de co9andos else& > bloco de co9andos na a4sancia de 49 breaR .... breaR .... i! $ < & .+ 0+ =+ 2+ F+ -/+ 0+ D+ /1 >>> !or $ in $ar& .... _alor negati$o encontrado& -/ 4! . >>> $ar = ).. else& ..2struturas de Controle: 3or " laço +or ainda aceita as instruç'es continue e break. print "_alor negati$o encontrado& [d( [ i . .....

... ./ % 49 ..... ..+ n)& i! n [ x == & breaR else& > loop !ell thro4gh Aitho4t !inding a !actor print <[.2struturas de Controle: 3or ?=meros primos menores #ue JF: >>> !or . % 49 / % 49 = % 49 F % 49 11 % 49 1/ % 49 1F % 49 1G % 49 . ..+ / )& !or x in range(..d % 49 nQ9ero pri9o< [ n nQ9ero nQ9ero nQ9ero nQ9ero nQ9ero nQ9ero nQ9ero nQ9ero nQ9ero nQ9ero pri9o pri9o pri9o pri9o pri9o pri9o pri9o pri9o pri9o pri9o 42 .... ..G % 49 n in range(. . ..

-ssim como o -or1 aceita as instruç'es continue e break.= ... 9 = n / . ....2struturas de Controle: 4hile " laço 'hile é =til #uando se é necess%rio +a2er um teste a cada interação do laço.. n = 9 / ... >>> print "Lora9 [d ineraXces( [ co4nt Lora9 =1 ineraXces 43 ..... Bua sinta&e completa tem a +orma: Ahile condiXYo& > bloco de co9andos else& > bloco de co9andos exec4tados na a4sancia de 49 breaR . >>> 9 = / P 1GO n = = P 1/ >>> co4nt = >>> Ahile 9 < n& .= . co4nt K= 1 .

/ = D 1/ 44 .. >>> print "* s%rie de Libonacci at% [d+ %&Nn[s( [ ( n+ !ib) * s%rie de Libonacci at% .. > o 9es9o @4e& a = O b = 1O c = ..2struturas de Controle: 4hile Bérie de (ibonacci até HF: >>> a+ b+ n = + 1+ .. a+ b = b+ aKb > a = bO b = a K b .. + %& 1 1 . !ib = !ib K " K ( K str(b) .. >>> !ib=<< >>> Ahile b < n& .

as #uando al0o inesperado ocorre Python o+erece uma +orma adicional de controlar o +lu&o de e&ecução: a e5ceção >>> a = )1+ . ?a terceira linha indica o tipo de e&eção levantada * IndexError.rror& list index o4t o! range . se0unda linha indica a linha de c/di0o e o ar#uivo onde o erro ocorreu 4stdin Q entrada padrão modo interativo5.25ceç*es Com os laços -or e 'hile e a condicionais i-s todas as necessidades de controle em um pro0rama podem ser implementadas. .+ /1 >>> print a)=1 IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> Mndex.primeira linha anuncia #ue ocorreu um traceback. 45 .

sinta&e para tratamento de e&ceç'es é apresentada abai&o: try& > co9andos @4e pode9 gerar a exceXYo except tipo?exceXYo )+ $ariB$el1& > co9andos a sere9 exec4tados para a exceXYo gerada ... 46 ...) )+ $ariB$el1& > co9andos a sere9 exec4tados para a exceXYo gerada .25ceç*es: Tratando e5ceç*es .. ...linha except também pode conter uma tupla com diversas e&ceç'es: except (tipo?exceXYo?1+ tipo?exceXYo?..+ . .

except Mndex.+ /1 >>> try& .. "utro e&emplo: >>> a = <tolo< >>> print a K 1 IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> Iype.... 7Yo pode so9ar 49a string a 49 inteiro. print a K 1 .rror& cannot concatenate 'str' and 'int' ob3ects >>> try& .rror& . print "Ientati$a de acessar 49 dndice inexistente... print a)=1 .( . print "7Yo pode so9ar 49a string a 49 inteiro.......25ceç*es: Tratando e5ceç*es . except Iype.( .e&ceção anterior poderia ser tratada da +orma: >>> a = )1+ . Ientati$a de acessar 49 dndice inexistente.. 47 ...rror& ..

. print b+ . " retorno é opcional... >>> !ibonacci(1 ) 1 1 .. a+ b = + 1 ..+ .. >>> de! !ibonacci(n)& ...+ arg?n)& > cbdigo da !4nXYo )ret4rn $alor?de?retorno1 . Ahile b < n& . Cma +unção sem retorno pode ser encarada como um procedimento... a+ b = b+ aKb . / = D 1/ ....6unç*es Binta&e 0eral de uma +unção: de! no9e?!4nXYo(arg?1+ arg?.1 /0 == DG 48 ..

= V"no9e( & "Eopa de leg49es(+ "preco( & D...... s .. .. ...... Esta linha é chamada de docstring uma documentação para a +unção.. >>> .+ p/1 "bserve #ue a primeira linha em cada +unção 4procedimento5 é apenas descritiva não sendo e&ecutada pelo interpretador... .G W p.. .!( [ (p)"no9e(1+ p)"preco(1) p1 = V"no9e( & "*rro' co9 brocolis(+ "preco( & G.. . ..F W p/ = V"no9e( & "5entilhas(+ "preco( & F.D W lista?pratos = )p1+ p. [2...... >>> >>> >>> >>> >>> >>> de! i9pri9e?cardapio(pratos)& "Crocedi9ento para i9pressao do cardapio( print "-ardapio do diaNn( !or p in pratos& i9pri9e?prato(p) print "NnIotal de pratos& [d( [ len(pratos) de! i9pri9e?prato(p)& "Crocedi9ento para i9pressao do prato( print "[.6unç*es >>> .. 4 .

..??doc?? 'Crocedi9ento para i9pressao do cardapio' >>> i9pri9e?prato.. a+ b+ ! = + 1+ "( ...............??doc?? 'Crocedi9ento para i9pressao do prato' (ibonacci com retorno >>> de! !ibonacci(n)& . ret4rn ! 5" ... G.....D Iotal de pratos& / >>> >>> i9pri9e?cardapio...F F.6unç*es >>> i9pri9e?cardapio(lista?pratos) -ardapio do dia *rro' co9 brocolis . a+ b+ ! = b+ aKb+ !Kstr(b)K( " .. 5entilhas .G D... Ahile b < n& .. Eopa de leg49es .

K taxa) ... " resultado alcançado pode não ser o desejado.!( [ aplicar?94lta(1 1. >>> print "_alor a pagar& [=.6unç*es: argumento com !alor padrão > poss3vel de+inir valores padr'es para os ar0umentos de entrada: >>> de! aplicar?94lta($alor+ taxa= .1=)& . ret4rn $alorP(1. >>> print "_alor a pagar& [=.=....=) ?ão utili2e como valor padrão listas dicion%rios ou outros valores mut%veis..!( [ aplicar?94lta(1 11=. ) + . 5! ..

) ( . + . ) >>> segra4(b=0+ a=.0PaPc . + .6unç*es: argumento com !alor padrão )eja outro e&emplo: >>> !ro9 9ath i9port s@rt >>> de! segra4(a+ b = .Pa)+ -s@rt(-delta)/(. ret4rn ( r1+ r. .Pa)) .) ( .Pa) .+ =+ /) (-1..=) >>> segra4(c=...) (13+ -13) >>> segra4(a=.+ a=.. ) >>> segra4(...=) >>> segra4(.Pa)) . delta = bPP. i! delta > & .+ 0) ( . r.) (13+ -13) 52 . = (-b . ) >>> segra4(c=/+ a=.. r1 = (-b K s@rt(delta))/(..Pa) ...s@rt(delta))/(..) ( . + -. = co9plex(-b/(.Pa)+ s@rt(-delta)/(. )& .. ) ... else& .... r. + -1.. + c = . + -1. + -. >>> segra4(..+ b==) (-1.. ) >>> segra4(. r1 = co9plex(-b/(..+ c = ..

+ ..rror& segra4() taRes at least 1 non-ReyAord arg49ent ( gi$en) 53 . ) >>> segra4(b=0+ a=.=) >>> segra4(c=.) (13+ -13) -s vari%veis @bA e @cA possuem valor padrão e por isto são opcionais j% a vari%vel @aA é obri0at/ria e deve ser passada: >>> segra4(a=0) ( . + -1. ) >>> segra4(b=.) ( .+ b==) (-1.6unç*es: argumento com !alor padrão Esta +unção também poderia ser chamada nas +ormas: >>> segra4(a=.+ c=0) IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> Iype..) ( .. + . + -.+ a=. ) >>> segra4(c=/+ a=.

so9a = .. >>> 9edia(1+. ret4rn so9a/len($alores) . !or n in $alores& .6unç*es: con'unto de argumentos Cm conjunto de ar0umentos opcionais podem ser passados com o au&3lio do curin0a @RA: >>> de! 9edia(P$alores)& ......+/+0+=+2) /. so9a K= n ... .= 54 ...

.. Be +or usar @RA e @RRA tome o cuidado para #ue @RA sempre preceda @RRA. !or i in Reys& .. print '[1 s & [d' [ (i+ n49eros)i1) .. print no9e K <&< .... Reys = n49eros..Reys() .(no9e+ Pstrings+ PPn49eros)& .. !or i in n49eros.Reys()& ..6unç*es: dois con'untos de argumentos Cm se0undo conjunto de ar0umentos opcionais podem ser passados usando @RRA para o se0undo conjunto.. !or i in strings& ... print '[1 s & [d' [ (i+ n49eros)i1) . 55 ..... print no9e K <&< ....sort() . >>> de! teste.... >>> de! teste1(no9e+ PPn49eros)& . print '> '+ i . !elo #ue pude perceber este se0undo conjunto deve ser um composto de: $ar? ='$alor? '+ $ar?1='$alor?1'+ ... Reys..

>>> >>> teste.('749eros'+ '#s nQ9eros sYo ordenados'+ 'pelos se4s no9es'+ 49=1+ dois=.6unç*es: dois con'untos de argumentos >>> teste1('749eros'+ 49=1+ dois=.+ tres=/+ @4atro=0+ cinco==) 56 .('749eros'+ 49=1+ dois=.+ tres=/+ @4atro=0+ cinco==) 749eros& 49 & 1 cinco & = tres & / @4atro & 0 dois & . @4atro & 0 tres & / 49 & 1 >>> >>> teste.+ tres=/+ @4atro=0+ cinco==) 749eros& > #s nQ9eros sYo ordenados > pelos se4s no9es cinco & = dois & .

...nicie uma nova seção do !ython a = = para as discuss'es a se0uir b = D de! so9a(x+y)& print 'a ='+a+ 'b ='+ b ret4rn xKy so9a(... 57 .2scopo da 7ari$!el Suanto uma vari%vel é de+inida no bloco principal de um pro0rama ele estar% presente no escopo de todas as +unç'es de+inidas a posteriori: >>> >>> >>> .+ F) = b = D "bserve #ue os valores das vari%veis a e & são impressas corretamente mesmo elas não tendo sido passadas para a +unção ou seja estas vari%veis +a2em parte do escopo da +unção soma. .. >>> a = G . .

. >>> prod4to(.2scopo da 7ari$!el Continuando o e&emplo observe #ue ao atribuirmos valores a a e & de dentro da +unção produto os valores não são sobre*escritos aos valores das vari%veis de mesmo nome no escopo principal: >>> de! prod4to(x+y)& . a+ b = x+ y ... b = F 10 >>> print 'a ='+a+ 'b ='+ b a = = b = D 58 .. ret4rn a P b ... print 'prod4to& a ='+a+ 'b ='+ b ..+ F) prod4to& a = ..

b2.. >>> globals() V'a'& =+ 'b'& D+ '??b4iltins??'& <9od4le '??b4iltin??' (b4iltin)>+ 'prod4to'& <!4nction prod4to at x....+unção locals() retorna um dicion%rio semelhante ao da +unção glocals() mas para escopo local. !a0bb1D>+ '??na9e??'& '??9ain??'+ '??doc??'& 7oneW . >>> de! di$isao(x+y)& ..b2... a+ b = x+ y . !a0be2 >+ 'so9a'& <!4nction so9a at x.2scopo da 7ari$!el . >>> di$isao(1 +/) / V'a'& 1 + 'y'& /+ 'b'& /+ 'x'& 1 W >>> print 'a ='+a+ 'b ='+ b a = = b = D 5 . ret4rn locals() .. print a/b .+unção globals() retorna um dicion%rio com todo o escopo 0lobal e os seus valores.

.F+ V'x'& /+ 'n'& /W) >>> print p / >>> print n IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> 7a9e.. >>> pot(/+/) (.rror& na9e 'n' is not de!ined 6" . p = n . global p ....2scopo da 7ari$!el ...+unção global() permite de+inir uma vari%vel no escopo 0lobal de dentro de uma +unção: >>> de! pot(x+n)& .. ret4rn xPPp+ locals() .

.. print '> '+ i .2scopo da 7ari$!el )amos testar a +unção locals() na +unção testeJ... V'Reys'& )'cinco'+ 'dois'+ '@4atro'+ 'tres'+ '49'1+ 'i'& '49'+ 'n49eros'& V'49'& 1+ 'cinco'& =+ 'tres'& /+ '@4atro'& 0+ 'dois'& .. !or i in strings& .. ret4rn locals() . Reys = n49eros.Reys() .... !or i in Reys& .. Reys......('749eros'+ '#s nQ9eros sYo ordenados'+ 'pelos se4s no9es'+ 49=1+ dois=.. print no9e K <&< .W+ 'strings'& ('#s nQ9eros sYo ordenados'+ 'pelos se4s no9es')+ 'no9e'& '749eros'W 6! .+ tres=/+ @4atro=0+ cinco==) 749eros& > #s nQ9eros sYo or. >>> teste. "bserve #ue RRnumeros é passado como um dicion%rio e Rstrin0s como uma tupla: >>> de! teste...sort() .(no9e+ Pstrings+ PPn49eros)& . print '[1 s & [d' [ (i+ n49eros)i1) ...

+ 1=+ 1D+ . c]]): retorna uma lista de inteiros de F a a*I caso somente a seja passado como ar0umento: de a até b caso a e b sejam passados como ar0umentos: a até b com o incremento c caso a b e c sejam passados como ar0umentos.1+ .0+ .1+ 1D+ 1=+ 1.F1 >>> >>> range(/ +/+ -/) > gera 49a lista de / a 0 co9 step -/ )/ + . >>> range(1 ) > gera 49a lista co9 ele9entos de a G ) + 1+ .+ /+ 0+ =+ 2+ F+ D+ G1 >>> >>> range(/+ 1 ) > gera 49a lista de / a G )/+ 2+ G+ 1.0+ .F+ .6unç*es Pré)de3inidas " !ython possui v%rias +unç'es pré*de+inidas #ue nEo necessitam de importaç'es e&ternas.+ G+ 21 62 . )ou passar rapidamente al0umas destas +unç'es: range(a[. b[.

Considere os dois loops de I. !ortando não serão 0erados os elementos de uma lista.py ] grep 4ser 4ser 9 . b[.0rande utilidade do &ran0e é a sua aplicação em loops.FFF interaç'es abai&o: >J/4sr/bin/python > 5oop range.0=Fs $ ti9e xrange.py ] grep 4ser 4ser 9 .py !or i in xrange(1 pass )& )& $ ti9e range.//Fs 63 .py !or i in range(1 pass >J/4sr/bin/python > 5oop xrange. . Com o &ran0e um loop pode +icar até HNP mais r%pido. c]]): o mesmo #ue ran0e mas ao invés de retornar uma lista retorna um objeto #ue 0era os n=meros desejados por demanda.FFF.6unç*es Pré)de3inidas xrange(a[.

1 >>> >>> / a = '*lberto Eantos S49ont' len(a) a = )1+.0D) =. >>> >>> .6unç*es Pré)de3inidas len(a): retorna o comprimento da vari%vel a. >>> ro4nd(=.+/1 len(a) round(a[.=0D) 2. n]): arredonda o real DaD com DnD casas decimais. >>> ro4nd(=. Be DnD +or omitido ser% considerado n . F.=0D+ 1) =. Be a +or uma lista tupla ou dicion%rio len retorna o seu n=mero de elementos.= 64 . >>> ro4nd(=.

.2=2D12F GG02 G =0K .F=0 = .D0G1==/ 2F=G/. L H H M 8 65 .S . " mesmo #ue aRRn.2GDGG==2 03) chr(a): retorna o caracter ascii correspondente ao c/di0o a.. +/. " valor de a deve ser um inteiro entre F e HNN. n): retorna o valor de aTn onde a e n podem ser inteiro real ou comple&o... >>> poA(..+/) D >>> poA(.6unç*es Pré)de3inidas pow(a. +/./3) (./) G.DF >>> poA(. * .. >>> !or i in range(1 )& print chr(2=Ki)+ .

* . L H H M 8 ord(a): retorna o c/di0o ascii do caracter passado pela vari%vel a. " valor de % deve estar entre F e UNNJN. 66 . ...S ...6unç*es Pré)de3inidas unichr(a): como a +unção anterior retorna o caractere Cnicode correspondente ao inteiro a. & 22 ... * & 2= .& 2F S & 2D . & 2G L & F . " valor de a deve ser apenas um caracter. -té IHV chr4a5 . >>> !or i in range(1 )& a = chr(iK2=)O print '[s & [d' [ (a+ ord(a)) .. unichr4a5 >>> !or i in range(1 )& print 4nichr(2=Ki)+ .

) 'a' >>> 9ax('abacate'+ '!lores') '!lores' 67 . >>> 9in(1+2) 1 >>> 9in('a'+ . b): retorna o maior valor entre a e &. b): retorna o menor valor entre a e &.) . (unciona para #ual#uer tipo de vari%veis. (unciona de +oma a +unção min acima. >>> 9ax(1+2) 2 >>> 9ax('a'+ . >>> 9in('abacate'+ '!lores') 'abacate' max(a.6unç*es Pré)de3inidas min(a. ?o caso de comparação entre tipos di+erentes a comparação é +eita ap/s converter os ar0umentos em cadeias de caracteres.

. ) /.. >>> abs(-/) / >>> abs(-/.) ' x1. Esta +unção somente trabalha com n=meros inteiros reais e comple&os.) ' x12' >>> oct(..2' >>> hex( . > 9bd4lo de 49 co9plexo hex(a) e oct(n): retorna o valor he&adecimal e octal da vari%vel a.' 68 .6unç*es Pré)de3inidas abs(a): retorna o valor absoluto de a seu m/dulo. >>> hex(. >>> abs(/-03) =.) ' .

') 1.=' >>> str(1.' >>> str(1. >>> str(1..2F) 1. >>> !loat('1 ') 1 .) '1.. >>> int(1.6unç*es Pré)de3inidas: con!ers*es int(a): converte um n=mero real ou strin0 em um inteiro.K03)' 6 . str(a): converte um inteiro comple&o ou real em uma strin0.=) '1. float(a): converte um inteiro ou strin0 em um real.. >>> int('1. >>> !loat('=') =.K03) '(1.

) (.K 3) >>> co9plex('1.=) (2.K 3) >>> co9plex('1.6unç*es Pré)de3inidas: con!ers*es complex(a): converte uma strin0 inteiro ou real em um comple&o.=K 3) list(a) e tuple(a): converte uma strin0 em uma lista e uma tupla respectivamente.. >>> co9plex(.1K 3) >>> co9plex(2.') (1..1') (1. >>> list('abacate') )'a'+ 'b'+ 'a'+ 'c'+ 'a'+ 't'+ 'e'1 >>> t4ple('abacate') ('a'+ 'b'+ 'a'+ 'c'+ 'a'+ 't'+ 'e') 7" .

ntre co9 algo& <)O a .ntre co9 algo& <)O a .ntre co9 algo& V 'pai' & '8oYo'+ 'idade' = 2 V'idade'& F + 'pai'& '8oNxe/o'W >>> a = inp4t(<.ntre algo co9 algo& = K 0 G W 7! .ntre co9 algo& <)O a . " comando inp4t é o mesmo #ue e$al(raA?inp4t(pro9pt)). Btrin0s devem ser prote0idas com aspas simples ou duplas.ntre algo co9 algo& '*lberto Eantos S49ont' '*lberto Eantos S49ont' >>> a = inp4t(<. >>> a = raA?inp4t(<.ntre co9 o se4 no9e& *lberto >>> a '*lberto' input([prompt]): l7 #ual#uer coisa do teclado.6unç*es Pré)de3inidas: leitura do teclado raw_input([prompt]): l7 uma strin0 do teclado. >>> a = inp4t(<. Be pro9pt +or declarado ele ser% impresso sem alimentação de linha.ntre co9 o se4 no9e& <) .

Estas docstrin0s podem ser escritas entre aspas duplas: "9ensagens de 49a Qnica linha" ou tr7s aspas duplas: "(( 9ensage9 co9 9ais @4e 49a linha de$e9 ser escritas entre tras aspas d4plas "(( 72 . Btrin0s de documentação chamadas de docstrin0s são adicionados ao in3cio de m/dulos +unç'es e classes para instruir o +uncionamento e +uncionalidades dos m/dulos +unç'es e classes.Docstring: Documentação " !ython possui suporte nativo E documentação de c/di0o.

Docstring: Documentação >-P.(n) <<< de! !ib(n)& < Write Libonacci series 4p to n < a+ b = + 1 Ahile b < n& print b+ a+ b = b+ aKb de! !ib.(n)& < 6et4rn Libonacci series 4p to n < res4lt = )1 a+ b = + 1 Ahile b < n& res4lt.append(b) a+ b = b+ aKb ret4rn res4lt 73 .py <<< :od4lo Libonacci L4ncoes& !ib(n) !ib.coding& iso-DD=G-1 -P> :bd4lo Ee@4ancia de Libonacci& !ibonacci.

)eja o e&emplo a se0uir: >>> i9port !ibonacci >>> print !ibonacci.(n) >>> print !ibonacci.??doc?? :od4lo Libonacci< L4ncoes& !ib(n) !ib.Docstring: Documentação 8ocstrin0s são e&tremamente =teis para documentar m/dulos +unç'es e classes em seu c/di0o o #ue +acilita consultas +uturas destes m/dulos e +unç'es.??doc?? 6et4rn Libonacci series 4p to n print open.??doc?? Write Libonacci series 4p to n >>> print !ibonacci.. 74 .??doc?? open(na9e)+ 9ode)+ b4!!ering11) -> !ile ob3ect #pen a !ile 4sing the !ile() type+ ret4rns a !ile ob3ect.!ib.!ib.

8anipulação de %rqui!os: open+.+unção open retorna um objeto da classe +ile #ue permite +a2er a leitura e escrita em ar#uivos das mais diversas +ormas. . ?a sua +orma padrão o ar#uivo é aberto somente para leitura: ! = open(</etc/!stab<) >>> print ! <open !ile '/etc/!stab'+ 9ode 'r' at xF!D b12de > !ara conhecer todos os métodos do objeto ar#uivo voc7 pode utili2ar o comando dir(!): >>> dir(!) )'??class??'+ '??delattr??'+ '??doc??'+ '??enter??'+ '??exit??'+ '??getattrib4te??'+ '??hash??'+ '??init??'+ '??iter??'+ '??neA??'+ '??red4ce??'+ '??red4ce?ex??'+ '??repr??'+ '??setattr??'+ '??str??'+ 'close'+ 'closed'+ 'encoding'+ '!ileno'+ '!l4sh'+ 'isatty'+ '9ode'+ 'na9e'+ 'neAlines'+ 'next'+ 'read'+ 'readinto'+ 'readline'+ 'readlines'+ 'seeR'+ 'so!tspace'+ 'tell'+ 'tr4ncate'+ 'Arite'+ 'Aritelines'+ 'xreadlines'1 75 .

M! the si'e arg49ent is negati$e or o9itted+ read 4ntil .documentação de cada método pode ser muito =til para se aprender como utili2%*los: >>> print !.#L is reached. 7otice that Ahen in non-blocRing 9ode+ less data than Ahat Aas re@4ested 9ay be ret4rned+ e$en i! no si'e para9eter Aas gi$en.read.8anipulação de %rqui!os: open+. Lendo IF bytes >>> print '>>[s<<' [ !.read(1 ) >>/de$/sda= << 76 .??doc?? read()si'e1) -> read at 9ost si'e bytes+ ret4rned as a string. ) uma dica .

-inta5e completa do 3ile: open4nameW modeW bu++erin0XX5 *< +ile object -bre um ar#uivo no modo DrD 4leitura Q modo padrão5 DwD 4escrita5 ou DaD 4append5. Be bu++erin0 +or: F nenhum bu++er ser% alocado para o ar#uivo: I um bu++er de uma linha ser% alocado: nn um bu++er de nn bytes ser% alocado para o ar#uivo. 77 . DCD não pode ser usado com os modos DwD ou DMD. -dicione um DbD para abrir um ar#uivo no modo bin%rio e um DMD para permitir escrita e leitura simultaneamente. Be um DCD 4universal ne' lin' suport5 +or adicionado ao modo todo +im de linha ser% visto como um DYnD. " ar#uivo ser% criado se não e&istir #uando aberto no modo DwD ou DaD.8anipulação de %rqui!os: open+.

8anipulação de %rqui!os: open+. Be size +or ne0ativo ou omitido a leitura ser% +eita até alcançar o +inal do ar#uivo. %lguns métodos de open(): read([size]): ler size bytes e retorna como uma strin0. de no$e9bro+ repeti4 o !eito e+ diante de 49a 94ltidNxe/o de teste94nhas+ percorre4 .is !oi o pri9eiro $eri!icado pelo *erocl4be . 9etros a 49a alt4ra de 2 9etros.. Nn# $Nx!0o do 10-..is+ no -a9po de .Nn' 78 . ou 3ile+.read() '.agatelle e9 Caris./ de o4t4bro de 1G 2+ $oo4 cerca de 2 9etros e a 49a alt4ra de dois a trNxeas 9etros co9 se4 10 . >>> !..9 .Nn:enos de 49 9Nxeas depois+ e9 1.

is+ no -a9po de .seeR( ) > alcanXa o indcio do ar@4i$o >>> !.agatelle e9 Caris. " o!!set é contado em bytes F para o in3cio do ar#uivo.) > $ai para o !inal do ar@4i$o >>> !. ) > ler ./ de o4t4bro de 1G 2+ $oo4 cerca de 2 9etros e a 49a alt4ra de dois a trNxeas 9etros co9 se4 10 . ) '' 7 . " ar0umento opcional Ahence pode assumir tr7s valores: F * padrão mover para o in3cio do ar#uivo: I Q +ica no mesmo lu0ar: H Q move para o +inal do ar#uivo.read() > 3B alcanXo4 o !inal do ar@4i$o '' >>> !. de no$e9bro+ repeti4 o !eito e+ dia' >>> !.Nn:enos de 49 9Nxeas depois+ e9 1.read(. seek(offset[. >>> !. bytes '.read(.9 . whence]): move o ponteiro de acesso ao ar#uivo para uma nova posição.8anipulação de %rqui!os: open+.seeR( + .

. Be si2e +or di+erente de 2ero isto ir% restrin0ir o comprimento de bytes lidos.is+ no -a9po de .readline(1 ) ' percorre4 . Nn' >>> !.readline().readline(1 ) ':enos de 49 9Nxeas depois+ e9 1. 8" .seeR( ) >>> !.readline() ao invés de apenas !.8anipulação de %rqui!os: open+.Nn' >>> !. readline([size]): ler a pr/&ima linha como uma strin0.agatelle e9 Caris.is !oi o pri9eiro $eri!icado pelo *erocl4be .readline() '.readline() '# $Nx!0o do 10-..9 . 9etros a 49a alt4ra de 2 9etros./ de o4t4bro de 1G 2+ $oo4 cerca de 2 9etros e a 49a alt4ra de dois a trNxeas 9etros co9 se4 10 .. de no$e9bro+ repeti4 o !eito e+ diante de 49a 94ltidNxe/o de teste94nhas+' >>> !.Nn' Be não #uiser ver os caracteres de controle use: print !. >>> !.

9etros a 49a alt4ra de 2 9etros.agatelle e9 Caris.org/AiRi/Eantos?S49ont 8! .seeR( + ..AiRipedia.AiRipedia.read() .is+ no -a9po de .close() >>> !.seeR( ) >>> print !.9 . de no$e9bro+ repeti4 o !eito e+ diante de 49a 94ltidYo de teste94nhas+ percorre4 .Arite('6etirado http&//pt. 6etirado http&//pt. :enos de 49 9as depois+ e9 1./ de o4t4bro de 1G 2+ $oo4 cerca de 2 9etros e a 49a alt4ra de dois a tras 9etros co9 se4 10 .txt'+ 'rK') >>> !. 8evido ao bu++erin0 pode ser necess%rio usar os métodos !l4sh() ou close() para #ue o ar#uivo no disco re+lita as alteraç'es +eitas..readline() IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> _al4e.rror& M/# operation on closed !ile write(str): escreve a strin0 str no ar#uivo..org/AiRi/Eantos?S49ontNn') >>> !. >>> ! = !ile('texto.8anipulação de %rqui!os: open+.) > a$anXa para o !inal do ar@4i$o >>> !. # $eo do 10-.is !oi o pri9eiro $eri!icado pelo *erocl4be . close(): +echa um ar#uivo. >>> !.

tell() >>> line = 1 >>> Ahile pos J= end& . line K= 1 .)O end = !.posiXYo /0= 82 .....8anipulação de %rqui!os: open+.posiXYo 5inha .D0 5inha 0 .. pos = !.posiXYo 1/= 5inha / . .readline() . tell(): apresenta a posição corrente para escrita e leitura no ar#uivo.posiXYo ..posiXYo [d' [ (line+ pos) ... l = !.tell() ..tell() >>> !. print '5inha [d . >>> !. 5inha 1 ..seeR( )O pos = !.seeR( + .

>>> !.na9e 'texto.closed Lalse >>> !.9ode 'rK' name: retorna uma strin0 com o nome do ar#uivo +oi aberto.txt' closed: retorna Ir4e se o ar#uivo estiver +echado e Lalse se estiver aberto. >>> !. >>> !.close() >>> !.8anipulação de %rqui!os: open+. >>> !.!l4sh() mode: retorna a strin0 de modo com #ue o ar#uivo +oi aberto.closed Ir4e 83 . flush(): 0rava as alteraç'es em bu++er no ar#uivo.

8anipulação de %rqui!os: open+,
next(): ler o pr/&imo valor do ar#uivo corrente ou EtopMteration se o +inal do ar#uivo +or alcançado. - menos do EtopMteration 0erado ao alcançar o +inal do ar#uivo o método next() retorna o mesmo #ue o readline().
>>> !.seeR( )O !.next() ';9 ./ de o4t4bro de 1G 2+ $oo4 cerca de 2 9etros e a 49a alt4ra de dois a trNxeas 9etros co9 se4 10 ,is+ no -a9po de ,agatelle e9 Caris.Nn' >>> !.next() ... >>> !.next() '6etirado http&//pt.AiRipedia.org/AiRi/Eantos?S49ontNn' >>> !.next() IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> EtopMteration

84

Orientação a O&'etos
(2rientação a objetos1 221 3 um termo 4ue descreve uma s3rie de t3cnicas para estruturar soluç5es para problemas computacionais, 3 um paradigma de programação no 4ual um programa e estruturado em objetos1 e 4ue en-ati6a os aspectos abstração1 encapsulamento1 polimor7smo e herança,+

"bjetos: Como observamos em seç'es anteriores em !ython tudo é um objeto com atributos é métodos: valores tipos classes +unç'es métodos ...

85

Orientação a O&'etos: classes
Classes: - estrutura +undamental para de+inir uma objeto é a classe. Csarei o e&emplo do Christian R. Reis. )amos criar um m/dulo chamado +ormas.py com a de+inição de uma classe 8et9ngulo. Esta classe possuir% dois atributos: ladoOa e ladoOb e classe ir% calcular %rea e per3metro com os métodos calcula:area e calcula:perimetro:
> Se!ine !or9as >-P- coding& iso-DD=G-1 -Pclass 6etang4lo& lado?a = 7one lado?b = 7one de! ??init??(sel!+ lado?a+ lado?b)& sel!.lado?a = lado?a sel!.lado?b = lado?b print '-riando 49a no$a instfncia retfng4lo.' de! calc4la?area(sel!)& ret4rn sel!.lado?a P sel!.lado?b de! calc4la?peri9etro(sel!)& ret4rn . P (sel!.lado?a K sel!.lado?b)

86

Este é o método construtor padrão do !ython invocado #uando uma classe é instanciada 4nome dado a criação de um objeto a partir de uma classe5. Cma descrição abstrata da dualidade classe*inst1ncia: a classe é apenas uma matri2 #ue especi+ica os objetos mas #ue não pode ser utili2ada diretamente: a inst1ncia representa o objeto concreti2ado a partir de uma classe.inst1ncia é o objeto criado com base em uma classe deZnida.Orientação a O&'etos: classes Esta classe possui tr7s métodos sendo um deles um método especial ::init::/0. Instâncias: . 87 .#ue é manipulada no interior do método. Este método é opcional. Em !ython o primeiro ar0umento é especial sendo seu nome por convenção sel-. "bserve #ue todos os métodos possuem como atributo a vari%vel sel.

py: >>> !ro9 !or9as i9port P > i9porta apenas 6etang4lo+ por hora >>> r1 = 6etang4lo(.+ =) -riando 49a no$a instfncia 6etfng4lo >>> r.Orientação a O&'etos: classes -0ora vamos brincar um pouco com nossa primeira classe do m/dulo +ormas.' 88 .lado?b = lado?b print '-riando 49a no$a instfncia retfng4lo.lado?a = lado?a sel!. = 6etang4lo(/+ 0) -riando 49a no$a instfncia 6etfng4lo de! ??init??(sel!+ lado?a+ lado?b)& sel!.

de! calc4la?area(sel!)& ret4rn sel!.lado?a K sel!.lado?b) >>> r1.lado?b = 8 .Orientação a O&'etos: classes -p/s instanciados os objetos rI e rH os métodos calcula:area e calcula:perimetro são disponibili2ados >>> r1.lado?a .calc4la?peri9etro() 10 >>> r.calc4la?area() 1. P (sel!. >>> r1.lado?b de! calc4la?peri9etro(sel!)& ret4rn ..lado?a P sel!.

>>> a = test >>> a.. 'atrib4to pri$ado' " . = "atrib4to pri$ado( .... atr1 = "atrib4to p4blico( .. ?atr.Orientação a O&'etos: classes %tri&utos pri!ados e protegidos: !ython não possui uma construção sint%tica para de+inir atributos como privados em uma classe mas e&istem +ormas de se indicar #ue um atributo não deve ser acessado e&ternamente: !or convenção atributos iniciados por um sublinhado @OA não devem ser acessados e&ternamente: >>> class test& .?atr.atr1 'atrib4to p4blico' >>> a..

..' ?a verdade o atributo não est% inaccess3vel apenas teve seu nome alterado para :test::atr... >>> a. atr1 = "atrib4to p4blico( .rror& class test has no attrib4te '??atr.atr1 'atrib4to p4blico' >>> a. = "atrib4to pri$ado( . ??atr...Orientação a O&'etos: classes Buporte no pr/prio interpretador: atributos iniciados por dois sublinhados @OOA são renomeados para prevenir de serem acessados e&ternamente. 'atrib4to pri$ado' ! . >>> class test& .?test??atr. IracebacR (9ost recent call last)& Lile <<stdin><+ line 1+ in <9od4le> *ttrib4te.??atr. >>> a = test >>> a.

+ .. 2 ..... de! no9e?9%todo?9(sel!+ arg?1+ arg?....+ arg?R)& > bloco de co9andos do 9%todo?1 .sinta&e de uma classe é: class no9e-classe(base?1+ base?..+ ..Orientação a O&'etos: herança [erança é uma +orma de derivar classes novas a partir de classes* bases. atrib4to?' = calor?' de! no9e?9%todo?1(sel!+ arg?1+ arg?. !ython suporta herança simples e herança m=ltiplas. ..+ arg?n)& > bloco de co9andos do 9%todo?9 .+..+ base?n)& atrib4to?1 = $alor?1 .

lado?b (1 .lado?b = lado Em se0uida vamos criar um #uadrado de aresta IF e ver seus métodos e atributos >>> !ro9 !or9as i9port P >>> r1= U4adrado(1 ) >>> dir(r1) )'??doc??'+ '??init??'+ '??9od4le??'+ 'calc4la?area'+ 'calc4la?peri9etro'+ 'lado?a'+ 'lado?b'1 >>> r1. -dicione o te&to abai&o ao +ormas.Orientação a O&'etos: herança )amos de+inir a classe $uadrado como derivada de 8etangulo.py: class U4adrado(6etang4lo)& de! ??init??(sel!+ lado)& sel!. 1 ) >>> r1.calc4la?area()+ r1.calc4la?peri9etro() (1 + 0 ) 3 .lado?a = sel!.lado?a+ r1.

.. de! ??init??(sel!+ lado)& ..Orientação a O&'etos: herança In!ocando métodos de uma classe)&ase: poder3amos ter criado a classe $uadrado utili2ando o construtor da classe 8etangulo invocando*o de dentro da classe $uadrado.lado?b (1 + 1 ) >>> r1. 6etang4lo.. )amos +a2er isto para uma classe #4uare: >>> !ro9 !or9as i9port P >>> class E@4are(6etang4lo)& .calc4la?area()+ r1.calc4la?peri9etro() (1 + 0 ) 4 . >>> r1 = E@4are(1 ) -riando 49a no$a instfncia retfng4lo. >>> r1..lado?a+ r1.??init??(sel!+ lado+ lado) ..

1 . "bserve o e&emplo abai&o: >>> .a = .Orientação a O&'etos: herança 9ma 3raque:a...& a = 1 h = Loo. .a (<sta particularidade e -re= 4>entemente -onte de bugs di-?ceis de locali6ar1 e por este motivo se recomenda -orte= mente 4ue não se utili6e va= riáveis de tipos mutáveis em classes.. >>> >>> .1 g = Loo() g..() h. .a /+ . >>> >>> 1 class Loo..O h.a.append(.sto ocorre sempre com atributos mut%veis como listas e dicion%* rios. >>> .a g = Loo.() g.. >>> >>> )=+ >>> >>> )=+ class Loo& a = )=+ /1 h = Loo() h..)O h. -l0uns cuidados devem ser tomados ao se alterar atributos em um objeto.+ @Christian 8eisA 5 .a /+ . !ara atributos não mut%veis as atribuiç'es são sempre +eitas na vari%vel da inst1ncia local e não da classe como era de se esperar..

set?a(D) R = Loo.() 3.Orientação a O&'etos: herança (açamos al0uns testes a0ora: >>> >>> = >>> >>> >>> (D+ 3 = Loo.() 3. En#uanto por um lado ele lhe permite alterar a de+inição de um atributo de uma classe em tempo de e&ecução por outro lado pode 0erar erros de di+3cil locali2ação.a+ R.a 3.a =) 8esta +orma não h% superposição na de+inição da classe. Este é o custo da alta +le&ibilidade do !ython. 6 .

: veri+ica se classeOa é uma sub* classe de classeOb >>> iss4bclass(U4adrado+ 6etang4lo) Ir4e >>> iss4bclass(6etang4lo+ U4adrado) Lalse 7 .: veri+ica de o objeto passado é uma inst1ncia da classes >>> !ro9 !or9as i9port P >>> !1 = U4adrado(1=) >>> isinstance(!1+ U4adrado) Ir4e >>> isinstance(!1+ 6etang4lo) Ir4e issu&class+classe>a= classe>&.Orientação a O&'etos: 3unç*es <teis )amos ver duas +unç'es importantes para conhecer a hierar#uia de uma classe e inst1ncias isinstance+o&'eto= classe.

: veri+ica se um objeto possui um atributo...Orientação a O&'etos: 3unç*es <teis hasattr+o&'eto= atri&uto. >>> hasattr(!1+ lado?a) Ir4e >>> hasattr(!1+ lado) Lalse Cma +unção para veri+icar se um objeto é uma +orma: >>> de! MsLor9a(ob3)& ... >>> MsLor9a(!1) Ir4e >>> a = = >>> MsLor9a(a) Lalse 8 . ret4rn hasattr(ob3+ 'lado?a') and hasattr(ob3+ 'lado?b') .

Orientação a O&'etos Introspecção e re3le5ão: !ython permite obter em tempo de e&ecução in+ormaç'es a respeito do tipo dos objetos incluindo in+ormaç'es sobre a hierar#uia de classes. >>> r.??class?? <class !or9as. >>> !ro9 !or9as i9port P >>> r = U4adrado(1/) >>> dir(r) )'??doc??'+ '??init??'+ '??9od4le??'+ 'calc4la?area'+ 'calc4la?peri9etro'+ 'lado?a'+ 'lado?b'1 >>class>>: este atributo da inst1ncia arma2ena o seu objeto classe correspondente.U4adrado at x. dir+o&'eto.bF1Fbc0DFF > .: permite conhecer todos os atributos e métodos de uma classe ou inst1ncia.

Orientação a O&'etos >>dict>>: apresenta um dicion%rio com todos os atributos de uma inst1ncia. >>> r.bF1Fbc0DFF > >>module>>: apresenta uma strin0 o nome do m/dulo o #ual a inst1ncia ou a classe +oi importada.??9od4le?? '!or9as' !"" . >>> r.??dict?? V'lado?a'& 1/+ 'lado?b'& 1/W >>class>>: este atributo da inst1ncia arma2ena o seu objeto classe correspondente.U4adrado at x.??class?? <class !or9as. >>> r.

>>> U4adrado. >>> U4adrado.??bases?? (<class !or9as.6etang4lo at x.Orientação a O&'etos Classe>>&ases>>: apresenta uma tupla com as classes herdadas por Classe.??na9e?? 'U4adrado' !"! .abc1acDaF1 >+) Classe>>name>>: apresenta uma strin0 com o nome da classe.

. !ro9 <9bd4lo> i9port )<ident?1>+ <ident?. Estes m/dulos são carre0ados com o comando import como j% +oi apresentado ao lon0o desta apresentação. para a rai2.>+ ...> ) as no9e?. -s suas sinta&es b%sicas são: i9port <9bd4lo?1> ) as no9e?1 1 )+ <9bd4lo?.11 . !ro9 <9bd4lo> i9port P !"2 .1 ?a se0unda +orma ainda é poss3vel usar R para indicar a importação de todos os métodos +unç'es ....Importando 8?dulos ?esta =ltima seção do curso vou dedicar a apresentação de al0uns m/dulos padr'es do !ython.

!ib(1 ) 1 1 . . de de um um m/dulo m/dulo use use o o comando: comando: dir(9bd4lo) dir(9bd4lo) !"3 . !ython.'1 ?as ?as seç'es seç'es se0uintes se0uintes irei irei apresentar apresentar diversos diversos m/dulos m/dulos padr'es padr'es do do !ython..mportando tudo para a rai2: >>> !ro9 !ibonacci i9port P >>> !ib(1 ) 1 1 .Importando 8?dulos E&emplos: >>> i9port !ibonacci >>> !ibonacci..// /FF 21 GDF >>> dir() )'??b4iltins??'+ '??doc??'+ '??na9e??'+ '!ib'+ '!ib.1 /0 == DG 100 ... / = D 1/ .1 /0 == DG 100 .// /FF 21 GDF >>> dir() )'??b4iltins??'+ '??doc??'+ '??na9e??'+ '!ibonacci'1 . / = D 1/ . !ara !ara conhecer conhecer todos todos os os métodos métodos +unç'es +unç'es .

A5. !or e&emplo considere um m/dulo !ython ar0s.ps. ' > !or i in range(1 ) .py com o conte=do: > :od4lo args... = '.py !ro9 sys i9port arg$ print sys. >>> i9port sys >>> sys.arg$ !"4 .8?dulo ) sys sys: Este m/dulo possui v%rias +unç'es #ue permitem intera0ir com o pr/prio interpretador !ython: ps@ e psA: de+inem os prompts do !ython 4A>>>A e A.ps1 = '> ' > sys. print i arg!: arma2ena os ar0umentos passados pela linha de comandos na lista de strin0s ar0vWX onde o primeiro elemento é o nome do pro0rama chamado se0uido pelos outros ar0umentos.

...$ersion ('lin4x. = -/ )'args.8?dulo ) sys $ python args.'+ '='+ '-/'1 path: apresenta os caminhos utili2ados pelo !ython para buscar os m/dulos solicitados pelo comando import.='+ '/4sr/lib20/python.=..=/site-pacRages'+ '/4sr/lib20/python.pre!ix+ sys.=/site-pacRages/gtR-. F+ !"5 .plat!or9+ sys. >>> sys.'ip'+ '/4sr/lib20/python.=..1.'+ '/4sr'+ '.py ..=1&=0D2/+ Eep 1G& &1G) Nn)H-.1 (r.'+ '/4sr/lib20/python.=/libtR'+ '/4sr/lib20/python. '1 plat3orm= pre3i5= !ersion= BBB: in+ormaç'es sobre o !ython par1metros de sua instalação..1') 0 .0.path )''+ '/4sr/lib20/python.py'+ '.=/lib-dynload'+ '/4sr/lib20/python.=/plat-lin4x. >>> sys...

Arite('Hello World') Hello World>>> e5it: encerra uma seção do !ython mais diretamente >>> sys.8?dulo ) sys stdin= stdout= stderr: entrada sa3da e sa3da de erro padr'es. >>> sys.exit() $ ? !"6 . !ermite redirecionar as entradas e sa3das padr'es do sistema.stdo4t.

s4b(r'Nb*:S'+ r'*4thentic*:S'+ '*:S I4rion(t9) 20 g. >>> re. :obile') '*4thentic*:S I4rion(t9) 20 g.!indall(r'Nb!)a-'1P'+ 'Ahich !oot or hand !ell !astest') )'!oot'+ '!ell'+ '!astest'1 su&: substitui uma ocorr7ncia de uma strin0 por outra. :obile' !"7 . >>> i9port re >>> re. 3indall: permite encontra a ocorr7ncia de uma strin0 +iltrando*a por uma e&pressão re0ular.8?dulo ) re re: 4regular e.pression5 este m/dulo +ornece +erramentas para +iltrar strin0s através de E&press'es Re0ulares.

replace('the the'+ 'the') 'cat the hat' >>> re.8?dulo ) re Bubstituindo duas ocorr7ncias de uma strin0 por uma. >>> 'cat the the hat'. >>> re.s4b(r'(Nb)a-'1K) N1'+ r'N1'+ 'cat cat the the hat hat+ and 9y 9y shoes') 'cat the hat+ and 9y shoes' !"8 .s4b(r'(Nb)a-'1K) N1'+ r'N1'+ 'cat in the the hat') 'cat in the hat' Bem a mesma e+ici7ncia o mesmo poderia ser +eito com o método replace de strin0.

ret4rn 9ath. sqrt= cos= sin= BBB : diversas +unç'es matem%ticas..8?dulo ) math math: este m/dulo +ornece acesso a diversas as +unç'es matem%ticas e constantes.. >>> Ein(/ ) .D22 ..pi/1D .0GGGGGGGGGGGGGGG0 >>> Ein(2 ) .. "-alc4la seno de ang4lo e9 gra4s( .'+ 'ceil'+ 'cos'+ 'cosh'+ 'degrees'+ 'e'+ 'exp'+ '!abs'+ '!loor'+ '!9od'+ '!rexp'+ 'hypot'+ 'ldexp'+ 'log'+ 'log1 '+ '9od!'+ 'pi'+ 'poA'+ 'radians'+ 'sin'+ 'sinh'+ 's@rt'+ 'tan'+ 'tanh'1 >>> i9port 9ath >>> de! Ein(a)& . > 9es9o @4e radians() ..sin(ang) . ang = aP9ath. -s +unç'es ausentes podem ser constru3das a partir destas.. >>> dir(9ath) )'??doc??'+ '??!ile??'+ '??na9e??'+ 'acos'+ 'asin'+ 'atan'+ 'atan...=0 /FD00/D2 !" .

.: 0era um inteiro aleat/rio entre F e n*I >>> rando9.: escolhe de +orma aleat/ria um elemento de uma lista >>> i9port rando9 >>> rando9.: 0era um inteiro aleat/rio entre n e m incluindo os e&tremos m e n. >>> rando9..??doc?? choice+lista. )eja a documentação para mais detalhes: >>> print rando9.choice()'goiaba'+ 'laran3a'+ 'abacate'+ 'pera'1) 'pera' randrange+n.randint(/+ 2) 2 !!" .randrange(1 ) / randint+n= m.8?dulo ) random random: este m/dulo permite 0erar n=meros aleat/rios sorteios se#67ncias distribuiç'es reais uni+ormes 0amma .

: 0era uma lista com n elementos da lista sem repetição dos elementos.+ 1=1 0& )0D+ /2+ //+ =+ /+ . print <Eorteios da :egaEena< . >>> sena(=) Eorteios da :egaEena 1& )/ + /1+ =..& ).+ /+ =D+ 0G1 .8?dulo ) random sample+lista= n... + 02+ 1+ 2+ / + 1.. >>> !ro9 rando9 i9port sa9ple >>> sa9ple() + 1+ .../1 =& )1/+ =/+ 2+ ..1 /& )10+ /G+ =0+ =F+ 0...1 >>> de! sena(n = 1)& . " n=mero de elementos sorteados m deve ser menor ou i0ual ao comprimento da lista.. print str(iK1) K <& < K str(sa9ple(xrange(2 )+ 2)) .=+ /F+ ==1 !!! .+ /1+ 0) )1+ /+ + . <<<M9pri9e n sorteios para a :egaEena<<< . !or i in xrange(n)& .

print line <.4sno.astern Etandard Ii9e . >>> !or line in 4rllib.8?dulos para Internet .6>7o$.na$y...4rlopen(hhttp&//tycho. .EIh in line& > looR !or . urlli&A e smtpli& urlli&A: este m/dulo permite criar nave0ar pela internet carre0ar p%0inas pes#uisar .plh)& . C: ..EI !!2 .. >>> i9port 4rllib. i! h.=+ G&0/&/...9il/cgibin/ti9er..

send9ail(hsoothsayeriexa9ple.orgh+ <<<Io& 3caesariexa9ple.E:IC(hlocalhosth) >>> ser$er.8?dulos para Internet .org Lro9& soothsayeriexa9ple.@4it() !!3 . <<<) >>> ser$er.eAare the Mdes o! :arch.orgh+ h3caesariexa9ple. urlli&A e smtpli& smtpli&: com este m/dulo é poss3vel enviar emails através de um servidor smtp. >>> i9port s9tplib >>> ser$er = s9tplib.org .

8?dulo ) datetime
datetime: este m/dulo +ornece classes para manipulação de datas e horas nas mais variadas +ormas.
date+ano= mCs= dia,: cria um objeto data.
>>> !ro9 dateti9e i9port date >>> ho3e = date.today() >>> nasci9ento = date(1GD2+ =+ 12) >>> idade = ho3e Z nasci9ento >>> print "E4a idade % [d anos( [ int(idade.days//2=) E4a idade % 11 anos >>> >>> dir(date) )'??add??'+ '??class??'+ '??delattr??'+ '??doc??'+ '??e@??'+ '??ge??'+ '??getattrib4te??'+ '??gt??'+ '??hash??'+ '??init??'+ '??le??'+ '??lt??'+ '??ne??'+ '??neA??'+ '??radd??'+ '??red4ce??'+ '??red4ce?ex??'+ '??repr??'+ '??rs4b??'+ '??setattr??'+ '??str??'+ '??s4b??'+ 'cti9e'+ 'day'+ '!ro9ordinal'+ '!ro9ti9esta9p'+ 'isocalendar'+ 'iso!or9at'+ 'isoAeeRday'+ '9ax'+ '9in'+ '9onth'+ 'replace'+ 'resol4tion'+ 'str!ti9e'+ 'ti9et4ple'+ 'today'+ 'toordinal'+ 'AeeRday'+ 'year'1 !!4

8?dulo ) :li&
:li&: este m/dulo permite trabalhar com dados comprimidos comprimindo descomprimindo ...
compress+string,= decompress+string,: comprime e descomprime uma strin0
>>> !ro9 'lib i9port co9press+ deco9press+ crc/= >>> s = ";9 ./ de o4t4bro de 1G 2+ $oo4 cerca de 2 9etros e a 49a alt4ra de dois a tras 9etros co9 se4 10 ,is+ no -a9po de ,agatelle e9 Caris.( >>> len(s) 1/0 >>> ' = co9press(s) >>> len(') 11/

crcDA+string,: computa o CRC*JH de uma strin0 4chec\sum5
>>> !ro9 'lib i9port crc/= >>> crc/.(s) /D1 112/D !!5

8?dulo ) timeit
timeit: este m/dulo permite monitorar o desempenho na e&ecução de comandos !ython
>>> Ii9er('xrange(1 )').ti9eit() .G/D DGD0F=202GF.F >>> >>> Ii9er('range(1 )').ti9eit() ..G/ ==FG22./..GGD

"bserve #ue o xrange(1 ) che0a a ser U]P mais r%pido #ue o range(1 ). .sto mostra a vanta0em em se usar o xrange em loops e outras ocasi'es.
>>> Ii9er('t=aO a=bO b=t'+ 'a=1O b=.').ti9eit() ./DG..2G1/0=.10D00 >>> Ii9er('a+ b = b+ a'+ 'a=1O b=.').ti9eit() ./1.1.GGF0/2=./0/D

?o swap acima +oi poss3vel conse0uir HFP a menos no processamento evitando*se uma atribuição em uma vari%vel tempor%ria.
!!6

com. editor tradução: !ython $rasil !ython na !r%tica * Cm curso objetivo de pro0ramação em !ython http://www..async. 8ra\e _r. dispon3veis para o !ython.br/projects/pnp/ de Christian Robottom Reis -sync "pen Bource \i\o`async. (i&liogra3ia: Kutorial !ython release H..com.H de Guido van Rossum (red L .Consideraç*es 6inais E&iste ainda muitos aspectos m/dulos +unç'es objetos +unç'es .^.br 8ocumentação do !yton 4dir45 e OOdocOO5 !!7 .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->