You are on page 1of 33

Curso de Python

Gustavo Noronha Silva 11 de agosto de 2005

2

Sum´ ario
1 Introdu¸ c˜ ao 9

2 Revis˜ ao de Conceitos 11 2.1 Linguagem Interpretada vs Compilada . . . . . . . . . . . . . . . 11 2.2 Tipagem Forte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Orienta¸ ca ˜o a Objeto . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 M˜ ao na massa! 3.1 O Interpretador Python . . . . . . . 3.2 M´ odulos, as bibliotecas do Python . 3.3 Se virando no Python . . . . . . . . 3.3.1 A fun¸ ca ˜o dir() . . . . . . . . 3.3.2 PyDoc . . . . . . . . . . . . . 3.3.3 Nosso amigo help() . . . . . . 3.4 Vari´ aveis e mais sintaxe b´ asica . . . 3.5 Condi¸ co ˜es e Estruturas de Repeti¸ ca ˜o 3.6 Usando um editor . . . . . . . . . . 4 Tipos de Dados 4.1 Inteiros e Ponto flutuante 4.2 Strings . . . . . . . . . . . 4.3 Listas e Tuplas . . . . . . 4.4 Dicion´ arios . . . . . . . . 4.5 Convers˜ ao / “Casting” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 14 15 15 15 16 17 19 20 23 23 23 24 25 26 27 27 27 28 28

5 Fun¸ co ˜es 5.1 Sintaxe B´ asica . . . . . . . . . . . . 5.2 Passagem Avan¸ cada de Argumentos 5.3 Retorno da fun¸ ca ˜o . . . . . . . . . . 5.4 Documentando . . . . . . . . . . . .

6 Classes 29 6.1 Criando estruturas em Python . . . . . . . . . . . . . . . . . . . 29 6.2 M´ etodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3

. .4 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 31 33 7 Arquivos / IO 8 Leitura Recomendada . .3 ´ SUMARIO Heran¸ ca .

Gustavo Noronha Silva <kov@debian. 5 .org> Esse curso est´ a licenciado sob a GNU FDL (Free Documentation License). fornecida pela Free Software Foundation.Nota de Copyright Copyright ( c ) 2003.

6 ´ SUMARIO .

net> pela grande ajuda na escrita desse curso. 7 .Agradecimentos Muito obrigado a Allan Douglas <allan douglas@gmx.

8 ´ SUMARIO .

Cap´ ıtulo 1 Introdu¸ c˜ ao A programa¸ ca ˜o nos dias atuais est´ a centrada em uma briga de gigantes que pretendem impˆ or seus padr˜ oes para substituir a linguagem conhecida como “padr˜ ao da ind´ ustria”. mas perceber˜ ao que Python se adapta muito bem ao modelo mental do programador e vai se sentir falando com a m´ aquina em pouco tempo. apesar de ser uma linguagem interpretada. ao mesmo tempo em que. C++. 9 . Python ´ e uma dessas linguagens e traz uma simplicidade indiscut´ ıvel. Correndo por fora est˜ ao linguagens relativamente pouco conhecidas e aclamadas. ´ e extremamente veloz. Aqueles que j´ a programam h´ a tempos com linguagens cheias de controle sint´ atico v˜ ao certamente se sentir perdidos num primeiro contato. talvez por serem fruto do esfor¸ co de grandes mestres da computa¸ ca ˜o (como as primeiras linguagens) e n˜ ao por grandes empresas.

INTRODUC ¸ AO .10 ˜ CAP´ ITULO 1.

1 Linguagem Interpretada vs Compilada Python.Cap´ ıtulo 2 Revis˜ ao de Conceitos Python ´ e uma linguagem simples. Linguagens compiladas normalmente s˜ ao mais r´ apidas. porque o c´ odigo j´ a est´ a num formato que o computador entende. 11 . ´ e uma linguagem interpretada. como j´ a foi dito. Vamos dar uma revisada em alguns conceitos importantes que nos subsidiar˜ ao no aprendizado de Python. Shell Script.2 Tipagem Forte Python ´ e uma linguagem de tipagem forte. 2. mas n˜ ao se esque¸ ca de conferir o compilador JIT do Python. mas ´ e constru´ ıda em uma base te´ orica e t´ ecnica muito complexa. em alguns casos. como Perl. Ela eleva a orienta¸ ca ˜o a objetos. Vamos usar mais o segundo modelo durante o curso. ao extremo. Batch Scripts. 2. em que nunca se sabe o tipo exato de uma vari´ avel. Isso significa que n˜ ao ´ e necess´ aria a compila¸ ca ˜o do c´ odigo para que ele seja executado e isso tr´ as v´ arias vantagens e desvantagens embutidas. Isso o torna diferente de um script Shell. Isso significa que se uma vari´ avel adquire um determinado tipo n˜ ao deixa mais de ser daquele tipo a menos que seja recriada. por exemplo. entre outras. Linguagens interpretadas costumam funcionar de uma ou outra maneira: • Compila¸ ca ˜o Just-In-Time • Interpreta¸ ca ˜o pura ou em Bytecode O Python pode funcionar das duas formas.

2. . pois j´ a vi muita gente dizer que uma linguagem ´ e orientada a objetos “porque vocˆ e pode criar interfaces gr´ aficas”1. Isso n˜ ao significa. como inteiro e caractere s˜ ao objetos. REVISAO Apesar da sua tipagem ser forte. Tome muito cuidado com os nomes das vari´ aveis. e nela quase tudo ´ e um objeto. em que o processo. j´ a que C++ ´ e orientada a objetos e C n˜ ao. ou as estruturas de dados s˜ ao o centro e vocˆ e chama fun¸ co ˜es que atuam sobre esses elementos. Leve isso em conta quando programar.12 ˜ DE CONCEITOS CAP´ ITULO 2. ´ e claro. a declara¸ ca ˜o de vari´ aveis n˜ ao ´ e necess´ aria e a simples atribui¸ ca ˜o de um valor serve para criar ou recriar uma vari´ avel. N˜ ao tem nada a ver. Talvez seja exatamente uma deriva¸ ca ˜o do conceito errado que eu cito aqui. 1 Outro conceito extremamente errado e muito difundido ´ e que C ´ e para aplica¸ co ˜es comuns e C++ para interfaces gr´ aficas. que n˜ ao se pode criar aplica¸ co ˜es com interfaces gr´ aficas com Python ou com qualquer outra linguagem orientada ou n˜ ao a objetos. Uma linguagem orientada a objetos coloca como centro nervoso do programa um ou mais objetos de determinada classe. At´ e mesmo as vari´ aveis que representam os tipos mais b´ asicos. ao contr´ ario das linguagens estruturadas.3 Orienta¸ c˜ ao a Objeto Dou uma ˆ enfase especial a esse conceito. Python ´ e uma linguagem orientada a objetos. tˆ em seus m´ etodos e propriedades.

1 O Interpretador Python O interpretador ´ e o programa que executa c´ odigo Python. que pode nos ser muito u ´ til a qualquer momento.Cap´ ıtulo 3 M˜ ao na massa! Vamos ent˜ ao come¸ car! A primeira coisa a fazer ´ e nos familiarizarmos com o interpretador Python. Ele est´ a dizendo “oi!” =D. Veremos como descobrir informa¸ co ˜es sobre um determinado elemento e como usar o interpretador para testarmos pequenos trechos de c´ odigo. Basicamente ele informa de que vers˜ ao do Python 13 . Para execut´ a-lo basta abrir um terminal e digitar ‘python’. 3. Vocˆ e ver´ a algo desse tipo: O que vemos nas trˆ es primeiras linhas ´ e a apresenta¸ ca ˜o do interpretador.

Vejamos as trˆ es formas de importar m´ odulos: >>> import os >>> os.” antes da fun¸ ca ˜o ou propriedade. vamos responder a ele. algumas vezes os m´ odulos s˜ ao bibliotecas). Isso pode ser familiar para quem lida com Java ou C#. a terceira forma ´ e como a segunda. . que n˜ ao h´ a um caractere delimitador da chamada (como “. Pode-se fazer uma associa¸ ca ˜o ` as bibliotecas usadas em C (e.2 M´ odulos. Python!’ Ol´ a. ” em C e Pascal). tamb´ em. Mas cuidado com a balan¸ ca comercial. importa o m´ odulo como um todo. com que compilador foi compilado e sugere algumas chamadas b´ asicas caso tenha problemas ou d´ uvidas. MAO se trata.getcwd () ’/home/kov’ >>> from os import getcwd >>> getcwd () ’/home/kov’ >>> from os import * >>> getcwd () ’/home/kov’ A primeira.” antes de chamar a fun¸ ca ˜o. “from os import getcwd”. temos que import´ a-los. as bibliotecas do Python No Python chamamos as cole¸ co ˜es de c´ odigo que fornecem extens˜ oes para a linguagem de m´ odulos. importa somente aquela fun¸ ca ˜o determinada. portanto. J´ a que o interpretador nos disse “oi” n˜ ao sejamos mal-educados. hein! (duh) O Python procura sempre proteger o chamado espa¸ co de nomes e. Note. sempre que vocˆ e importar um m´ odulo ter´ a de usar seu nome para chamar fun¸ co ˜es e acessar propriedades que est˜ ao dentro dele. Vocˆ e pode usar aspas simples ou duplas para delimitar a mensagem. na verdade. importa todas. O interpretador vai executar o c´ odigo que escrevermos na hora. isso pode usar menos mem´ oria e n˜ ao ´ e mais necess´ ario usar “os. “import os”. Python! ´ Otimo! Podemos ver que ‘print’ serve para mostrar mensagens na tela. A fun¸ ca ˜o ‘print’ ´ e uma excess˜ ao entre as fun¸ co ˜es do Python. O segundo. e poderemos ver o resultado. mas ao inv´ es de importar uma s´ o fun¸ ca ˜o. 3. O >>> ´ e o prompt do interpretador. digitando o seguinte: >>> print ’Ol´ a.14 ˜ NA MASSA! CAP´ ITULO 3. Podemos sair programando em Python agora mesmo. j´ a que ela n˜ ao precisa de parenteses. Para us´ a-los. mas exige que sempre que vocˆ e quiser acessar algo que pertence ao m´ odulo vocˆ e tenha que adicionar “os.

’setdlopenflags’. ’setprofile’. ’rindex’. carrega aquelas fun¸ propriedades2.3. e quase tudo em Python ´ e um objeto. presente em linguagens como Java. ’stderr’.3 Se virando no Python Este documento n˜ ao pretende ser uma referˆ encia completa sobre o Python. SE VIRANDO NO PYTHON 15 3.) ’prefix’. ’stdin’. ’rfind’.) ’reduce’. . ’staticmethod’. Ent˜ ao. ’swapcase’. ’sum’. at´ e uma string! 2 Uma propriedade. ’rjust’. 3 As docstrings s˜ ao textos inclu´ ıdos no in´ ıcio da defini¸ c˜ ao de uma classe ou fun¸ ca ˜o documentando-as. ’str’. ’round’. ’unicode’. ’warnoptions’] >>> dir("umastring") (. p´ agina 28.. ’settrace’. ’super’. Veja mais detalhes na se¸ ca ˜o 5. normalmente.2 PyDoc pydoc ´ e um software que acompanha a distribui¸ ca ˜o oficial do Python. ’upper’.) rip’. ’translate’. ’reload’. ’version_info’. depois de importados. um dos mais u ´ teis ´ e chamando-o para que monte um pequeno servidor HTTP.. ’zfill’] co ˜es ou Isso significa que o espa¸ co de nomes builtins . ’repr’.. Vamos ver como funciona: >>> dir (__builtins__) (. ’unichr’.3. ’setrecursionlimit’. ’ps1’.3. Ela fornece ` a linguagem a capacidade de reflex˜ ao. ’type’. H´ a v´ arios modos de utiliza-lo.3. Digite em um terminal: \$ pydoc -p 1234 pydoc server ready at http://localhost:1234/ 1 M´ odulos s˜ ao objetos. ’version’. por exemplo. ’setattr’. ’tuple’. como obter ajuda? Como descobrir quais s˜ ao as funcionalidades presentes nesta linguagem? Como “se virar”? 3. ’ps2’. ’setcheckinterval’. ’slice’.4 do cap´ ıtulo sobre Fun¸ co ˜es. ’stdout’.. ’splitlines’. Isso ajuda a saber sobre o que queremos ajuda. ’zip’] >>> import sys >>> dir (sys) (.1 A fun¸ c˜ ao dir() O Python tem uma fun¸ ca ˜o chamada dir(). ’replace’. ´ e uma vari´ avel. e que vocˆ e pode usar aqueles m´ etodos em qualquer string. ’split’. 3. ’strip’. ’rstrip’. que o m´ odulo sys tem aquelas listadas.. ’title’.. ’startswith’. ’xrange’. Ele permite acesso ` a documenta¸ ca ˜o presente nas docstrings 3 dos objetos. Isso significa que vocˆ e pode listar o conte´ udo de m´ odulos e qualquer outro tipo de objeto1 . ’vars’.

o help permite que vocˆ e obtenha ajuda em determinados t´ opicos. (. DOS. digite ‘modules’: help> modules Please wait a moment while I gather a list of all available modules.OS routines for Mac. e lista os m´ odulos Python instalados. v˜ ao desde a descri¸ ca ˜o dos tipos b´ asicos at´ e como fazer o debugging de um programa. Os assuntos s˜ ao variados. or Posix depending on what system we’re on. Clicando-se em um dos m´ odulos pode-se visualizar quais s˜ ao a fun¸ co ˜es (m´ etodos) dispon´ ıveis. .... ser´ a interpretado pelo help. digite ‘module palavra’ e o help retornar´ a uma lista de modulos que correspondem ` aquela palavra. Ele provˆ e uma fun¸ ca ˜o help(). Para visualizar a documenta¸ ca ˜o docstring de um m´ odulo. Digite ‘quit’ para sair. MAO Ele criar´ a um servidor que pode ser acessado pelo endere¸ co http://localhost:1234. Al´ em da documenta¸ ca ˜o dos m´ odulos.. NT..3 Nosso amigo help() O interpretador Python oferece um mecanismo de ajuda simples e eficiente. ArrayPrinter BaseHTTPServer Bastion CDROM (. Digite ‘topics’ para ver quais s˜ ao os topicos dispon´ ıveis. Ele poder´ a ser chamado para uma sess˜ ao interativa: >>> help() (Apresenta¸ c~ ao) help> help> ´ e o prompt do help. sua sintaxe e tamb´ em uma breve descri¸ ca ˜o.. 3.16 ˜ NA MASSA! CAP´ ITULO 3.3. A p´ agina ´ e produzida automaticamente. Tudo o que vocˆ e digitar a partir de agora.) asyncore atexit audiodev audioop linuxaudiodev locale logging (package) macpath sgmllib sha shelve shlex Para procurar um m´ odulo por palavra-chave. que permite acessar parte da documenta¸ ca ˜o oficial Python e o PyDoc. basta digitar o nome do m´ odulo: help> os Help on module os: NAME os .) Use as setas do teclado para ir para baixo/cima e aperte ‘q’ para sair. Para saber quais s˜ ao os modulos dispon´ ıveis.

Para acessar a ajuda das palavras-chaves e dos t´ opicos.1 Truth Value Testing Any object can be tested for truth value. primeiramente. n˜ ao ´ e necess´ ario declarar vari´ aveis em Python.´ ´ 3. ´ e necess´ ario. com uma breve descri¸ ca ˜o de seu uso. Vamos dar uma olhada ent˜ ao: .2. for use in an if or while condition or as operand of the Boolean operations below. VARIAVEIS E MAIS SINTAXE BASICA 17 Esqueceu qual a sintaxe do if ou de outra palavra-chave? N˜ ao tema! O help tamb´ em oferece um r´ apido acesso ` a gram´ atica das palavras-chave. import´ alo: >>> import os >>> help(os. ´ e preciso chamar o help delimitando o nome do t´ opico ou palavra-chave com aspas: >>> help(’TRUTHVALUE’) 2. Para obter a documenta¸ ca ˜o de um m´ odulo ou fun¸ ca ˜o. mode=0777]) -> fd Open a file (for low level IO).open) Help on built-in function open: open(. digite ‘keywords’ para saber quais s˜ ao as palavras-chaves.4 Vari´ aveis e mais sintaxe b´ asica Vamos continuar usando o interpretador.4... No help. ´ e s´ o digitar o nome: help> if 7. Como eu j´ a disse. Vari´ aveis s˜ ao estruturas simples que servem para guardar dados.) open(filename..) O help() pode ser chamado fora de um sess˜ ao interativa.1 The if statement The if statement is used for conditional execution: if_stmt ::= "if" expression[1] ":" suite[2] ( "elif" expression[3] ":" suite[4] )* ["else" ":" suite[5]] (... flag [. The following values are considered false: (. Agora vamos ver um pouco sobre vari´ aveis. E para acessar sua documenta¸ ca ˜o..) 3.

As opera¸ co ˜es com n´ umeros s˜ ao feitas como em outras linguagens: >>> >>> 2 >>> >>> 6 soma = 1 + 1 print soma mult = soma * 3 print mult J´ a que estamos lidando com vari´ aveis. mas a primeira nos ensina duas coisas importantes: 1) ´ e poss´ ıvel somar strings (e. na + 2 soma ´ e: " + str(soma) soma ´ e. Entre aspas temos o que chamamos de formato. Vamos mostrar vari´ aveis com ele. O sentido pr´ atico disso ´ e que o segundo 1 n˜ ao seria realmente mostrado na tela em um programa de verdade. meunome="Gustavo" minhaidade=20 print "Oi. eu sou %s e tenho %d anos!" % (meunome. veremos mais a frente. na verdade: %d" % (soma) verdade: 4 A primeira forma deve ser comum a quem programa em VB ou PHP. das vari´ aveis que queremos que substituam os c´ odigos. MAO A primeira linha coloca 1 na vari´ avel de nome variavel. na maioria das linguagens. Vamos ver mais um exemplo: >>> >>> >>> Oi. Observe: >>> soma = 2 >>> print "A A soma ´ e: 4 >>> print "A A soma ´ e. minhaidade) eu sou Gustavo e tenho 20 anos! . Em Python. particularmente. na verdade. Vamos analizar melhor a segunda. vamos ver como usar o print para coisas mais complexas. E fazer distin¸ ca ˜o entre essas duas u ´ ltimas. vocˆ e tem que converter o inteiro para string se quiser concatenar os dois. Eu. A segunda linha mos´ muito importante tra variavel na tela e a terceira retorna o valor de variavel. tamb´ em!) e 2) os tipos em Python s˜ ao fortes. sempre. prefiro a segunda forma. que ´ e a defini¸ ca ˜o do que aparecer´ a na tela. Existem v´ arias formas. uma express˜ ao.18 >>> variavel = 1 >>> print variavel 1 >>> variavel 1 ˜ NA MASSA! CAP´ ITULO 3. outros tipos de dados. Sempre existe uma avalia¸ ca ˜o do valor e um retorno do valor. A string “%d” significa que ali ser´ a colocado um inteiro. A segunda deve causar boas lembran¸ cas aos programadores de C =). Um programador deve saber que normalmente toda “afirma¸ ca ˜o” que ´ e feita em um programa ´ e. Depois do formato colocamos um separador (um “%”) e. entre parˆ enteses uma lista separada por v´ ırgulas. ele seria retornado para nada. por exemplo.

print "´ E 10!!" . para o desgosto de alguns. no Python toda “afirmativa” ´ e uma express˜ ao. ´ e necess´ ario um n´ ıvel de indenta¸ ca ˜o. O Python usa a indenta¸ ca ˜o para definir o in´ ıcio e t´ ermino de blocos. pressione a tecla tab. para come¸ car um bloco de condi¸ ca ˜o. =) Portanto. basta n˜ ao indentar a linha seguinte. Se eu fizer if variavel = 10 o interpretador ir´ a emitir um erro.. O Python. o Python n˜ ao aceita atribui¸ co ˜es em contextos que devem ser somente usados para express˜ oes de condi¸ ca ˜o. Vocˆ e pode fazer testes de condi¸ ca ˜o mais complexos com Python. como vimos.5 Condi¸ c˜ oes e Estruturas de Repeti¸ c˜ ao Antes de come¸ carmos a se¸ ca ˜o propriamente dita. Num programa de verdade n˜ ao ´ e necess´ ario adicionar uma linha em branco para terminar um bloco.. A vantagem do Python ´ e que ele obriga o programador a ter uma indenta¸ ca ˜o consistente.” e 2) para mostrar que um bloco acabou (no interpretador) basta dar enter sem indentar uma linha depois de ter escrito seu bloco. CONDIC ¸ OES E ESTRUTURAS DE REPETIC ¸ AO 19 3. ´ E 10!! Duas coisas importantes a serem observadas: 1) quando o Python espera que vocˆ e inicie um bloco. } Ou if (variavel = 10) then begin writeln ("´ E 10!!!").. Outra coisa importante: como eu disse inicialmente..5. ´ e necess´ ario entender como o Python marca o in´ ıcio e o final de blocos. porque atribui¸ co ˜es n˜ ao s˜ ao permitidas em um if. Aqueles acostumados com C e Pascal estar˜ ao acostumados com coisas do tipo: if (variavel == 10) { printf ("´ E 10!!!\n"). Um exemplo: >>> variavel = 10 >>> if variavel == 10: . diferentemente do C. n˜ ao tem estruturas sint´ aticas de abertura e fechamento de blocos. N´ os veremos isso melhor mais a frente.. o interpretador muda o prompt para “. O problema aqui ´ e que muitos programadores n˜ ao tˆ em h´ abito de fazer uma indenta¸ ca ˜o consistente. Mas. tamb´ em: >>> a = 2 ..˜ ˜ 3. o Python usa o operador “==” para compara¸ co ˜es. end. Para indentar. Por exemplo.

. . que n´ os veremos mais para frente.. 3[. . “<”. Um while segue. que ´ e a lista... .. aaa b = 6 if variavel == 10 and a == 2: print "aaa" elif b == 6: print "bbb" else: print "ccc" ˜ NA MASSA! CAP´ ITULO 3. efetivamente.. como “or” para rela¸ ca ˜o entre compara¸ co ˜es.. MAO Outros operadores podem ser usados.... contador = contador . o programa ... . Isso n˜ ao significa que vamos esquecer o interpretador daqui para frente: muito pelo contr´ ario! O interpretador vai ser quem rodar´ a.. “<=” e assim por diante.. “>”. Um loop for (para) em Python se parece muito com o estilo Pascal de for.6 Usando um editor Sim! Vamos parar de usar o interpretador diretamente para criar nossos c´ odigos e vamos passar para um editor. Em matem´ atica poder´ ıamos representar isso assim: [0. o u ´ ltimo nunca. 0 1 2 A fun¸ ca ˜o range serve para retornar uma lista que contenha o intervalo dado pelos n´ umeros especificados. 3): .. print "Python!" .. e “! =”. .... print contador . Python! Python! Python! 3.1 . Mas por enquanto vamos ver o b´ asico do for: >>> for contador in range (0. para rela¸ ca ˜o entre vari´ aveis e valores. Preste muita aten¸ ca ˜o.. O primeiro n´ umero que vocˆ e especificar sempre entra no intervalo. Ele exige um tipo de dado mais complexo. essencialmente a mesma l´ ogica de qualquer outro while que eu j´ a vi: >>> contador = 3 >>> while contador > 0: ..20 >>> >>> . o que nos permitir´ a salvar nossos programas..

aumentando a velocidade de processamento sem perder a portabilidade.. claro. abra seu editor e escreva o seguinte: #!/usr/bin/python # define que a variavel ’variavel’ conter´ a o valor 10 variavel = 10 if variavel == 10: # se vari´ avel for igual a 10 while variavel > 0: # enquanto a vari´ avel for maior que 0 print variavel # mostrar a vari´ avel variavel = variavel .py 4 Pr´ e-processados pelo interpretador para se tornar o “assembly” usado por ele. . nesse caso. ´ e claro. Muitas pessoas tˆ em a id´ eia errada de que ´ e necess´ ario um programa espec´ ıfico para programar. Os que tˆ em usam “. Ent˜ ao vamos colocar nosso primeiro exemplo para funcionar. Na verdade esses programas s˜ ao chamados IDE’s (Integrated Development Environmet). o MacOSX. Tudo que vier depois de um # e antes de uma quebra de linha ´ e um coment´ ario. Normalmente essa linha ser´ a: #!/usr/bin/python Essa ´ e uma boa hora para dizer. Podemos usar qualquer editor que seja capaz de salvar texto puro. abra um terminal e execute os seguintes comandos: $ chmod +x teste1. e tamb´ em o usaremos para obter ajuda e testar pequenos peda¸ cos de c´ odigo enquanto programamos. somente em sistemas Unix-like. tamb´ em.1 # e. No entanto. vamos escolher qualquer editor simples e come¸ car! Algumas conven¸ co ˜es para as quais devemos atentar: os arquivos execut´ aveis Python normalmente n˜ ao tˆ em extens˜ ao. como o GNU/Linux. necess´ arios. receber˜ ao a extens˜ ao “. para manter a coerˆ encia com o resto do sistema.py $ .pyc”../teste1. “teste1. FreeBSD. Isso significa qualquer editor. que em Python os coment´ arios s˜ ao feitos com o s´ ımbolo #. por agora. provavelmente. Outra conven¸ ca ˜o importante ´ e que todo script Python deve come¸ car com uma linha contendo a “string m´ agica” (#!) e a localiza¸ ca ˜o do interpretador.3.py” por exemplo. para que o sistema saiba como executar o script5 . diminuir seu valor # fim do programa!! Os coment´ arios est˜ ao a´ ı s´ o pra vocˆ e aprender a us´ a-los =)..py” como extens˜ ao. USANDO UM EDITOR 21 criado. Eles n˜ ao s˜ ao. HP-UX e outros.6. Muitas pessoas tamb´ em cometem o erro de chamar esses programas de “compiladores”. j´ a que isso ´ e uma conven¸ ca ˜o Unix. 5 Isso n˜ ao tem validade no Windows. H´ a diversos IDE’s para Python e n´ os conheceremos um mais ` a frente. Os arquivos podem ser “byte-compilados”4 e.. Depois de salvar o arquivo com um nome qualquer.

22 ˜ NA MASSA! CAP´ ITULO 3. O resultado deve ser: python@beterraba:~$ . MAO O primeiro comando d´ a permiss˜ oes de execu¸ ca ˜o ao arquivo..) 1 python@beterraba:~$ Hora da brincadeira!! Pegue seu editor preferido e fa¸ ca testes com o que j´ a aprendeu da linguagem! . o segundo o executa.py 10 9 (../teste1.

Cap´ ıtulo 4 Tipos de Dados O Python fornece.0 >>> print ’um inteiro: %d. o Python detecta o tipo do dado no momento em que ele ´ e atribu´ ıdo ` a vari´ avel. meu nick ´ e kov! Como disse anteriormente. O Python facilita muito as coisas. O que faz com que o Python “detecte” o tipo string s˜ ao as aspas.upper () 23 .000000 4. um ponto flutuante: 10. simples ou duplas. meu_nick) nome ´ e: Gustavo. ponto_flutuante) um inteiro: 10. Vejamos: >>> >>> >>> Meu meu_nome = "Gustavo" meu_nick = ’kov’ print "Meu nome ´ e: %s. Quem j´ a teve que usar uma lista encadeada sabe o quanto ´ e complicado implementar esse tipo de estrutura do zero. um ponto flutuante: %f’ % (inteiro. quase tudo em Python ´ e um objeto.2 Strings Lidar com strings em Python ´ e muito simples. Isso significa que uma string tem m´ etodos! Sim! Observe: >>> nome = "kov" >>> nome. Isso significa que: >>> inteiro = 10 >>> ponto_flutuante = 10. alguns tipos mais avan¸ cados e complexos que podem ser usados com muita facilidade. Como j´ a vimos.1 Inteiros e Ponto flutuante Lidar com n´ umeros em Python ´ e bem f´ acil. al´ em dos tipos b´ asicos de dados. e n´ os vamos explorar essas capacidades agora! 4. meu nick ´ e %s!" % (meu_nome.

TIPOS DE DADOS Note. >>> nome = ’Software Livre’ >>> nome ’Software Livre’ >>> nome[1] ’o’ >>> nome[1:5] ’oftw’ >>> nome[:-1] ’Software Livr’ 4.remove (’spuk’) >>> print lista [’kov’.3 Listas e Tuplas Agora o tipo de dados que serve como vetor e listas encadeadas.upper () ’KOV’ CAP´ ITULO 4.insert (2. Isso significa que se vocˆ e quiser que a string continue em letras mai´ usculas dali para frente vocˆ e deve fazer “nome = nome. ’o_0’] >>> lista.upper ()”. Para acessar partes espec´ ıficas da string. ’spuk’. uma coisa muito importante: uma string em Python ´ e sempre uma constante! Vocˆ e nunca modifica uma string. ’agney’] >>> lista. ’agney’) >>> print lista [’kov’. E ca ˜o. no entanto.append (’kov’) >>> lista = [’kov’. ’o_0’] >>> len(lista) 3 >>> lista. ’spuk’. porque ela ´ e muito u ´ til em v´ arias oportunidades e com alguns outros tipos de dados.pop () ’o_0’ >>> print lista [’kov’. ’agney’. vocˆ e pode usar a nota¸ ca ˜o de “fa´ importante entender bem essa nota¸ tias”. ’agney’] . o que vocˆ e pode fazer ´ e reatribu´ ı-la. ’spuk’.24 ’KOV’ >>> "kov". Vamos ver as opera¸ co ˜es principais com listas: >>> lista = [] # os [] fazem com que ’lista’ seja iniciada como lista >>> lista. N´ os veremos mais sobre como conhecer os m´ etodos dispon´ ıveis. Chamamos de lista uma lista que pode ser modificada dinamicamente e de tupla uma lista im´ ovel.

Algo importante de se notar ´ e que d´ a para usar a lista do Python como pilha. Outra deriva¸ ca ˜o importante desse exemplo ´ e ver que uma lista em Python ´ e indexada. Podemos usar “lista[0]” para acessar o primeiro ´ ıtem da lista2 . inclusive listas. que serve ´ sentar e explorar as possibilidades! para ordenar a lista. tupla = (1. E As tuplas funcionam quase do mesmo modo que as listas. Vocˆ e reconhece uma tupla por sua similaridade com uma lista. A quarta mostra como obter o tamanho da lista usando a fun¸ ca ˜o len() 1 . Os dicion´ arios em Python s˜ ao. DICIONARIOS 25 Note que todas as opera¸ co ˜es b´ asicas de lista encadeada s˜ ao contempladas pela implementa¸ ca ˜o de listas do Python. por exemplo 2 Em Python. mas ao inv´ es de usar [] uma tupla usa parˆ enteses. A terceira linha mostra como inicializar uma vari´ avel com uma lista pr´ e-criada. ´ ındices sempre come¸ cam do 0. como o sort(). Nesse exemplo usamos strings na lista. 35) tupla[0] tupla 35) 4. estruturas de dados que permitem “traduzir” uma chave para um valor. como strings. com a excess˜ ao de que s˜ ao listas que n˜ ao s˜ ao modific´ aveis.4. Um exemplo r´ apido: >>> >>> 1 >>> (1. como em C. As listas tˆ em outros m´ etodos de extremo interesse. . mas uma lista pode conter qualquer tipo de dado.4 Dicion´ arios Quem j´ a ouviu falar de Hash tables vai se sentir familiarizado com os dicion´ arios rapidamente. Elas s˜ ao bastante usadas como retorno de algumas fun¸ co ˜es. literalmente.´ 4. como um vetor. portanto ´ e bom explor´ a-las. Seu uso ´ e muito simples: >>> linguagem = {} >>> linguagem[’nome’] = ’Python’ >>> linguagem[’tipo’] = ’scripting’ >>> linguagem[2] = 100 >>> linguagem[2] 100 >>> linguagem[’tipo’] ’scripting’ 1 Note que a fun¸ ca ˜o len() pode ser usada em outros tipos de dados. inclusive. e podemos usar esse ´ ındice para inserir n´ os em posi¸ co ˜es espec´ ıficas. possibilitando a cria¸ ca ˜o simples de ´ arvores. usando os m´ etodos append() e pop().

por exemplo. Para esse tipo de coisas ´ e necess´ ario fazer uma convers˜ ao. TIPOS DE DADOS 4. Aqui est˜ ao exemplos: >>> a = 10 >>> str (a) ’10’ >>> float (a) 10. Isso significa que se uma vari´ avel cont´ em um inteiro ela n˜ ao pode simplesmente ser usada como se fosse uma vari´ avel de ponto flutuante. na verdade ´ e que um novo objeto ´ e criado e n˜ ao o mesmo objeto ´ e “adaptado” como acontece nos castings de C. .26 CAP´ ITULO 4.0 >>> int (’25’) 25 Note que uso aspas na palavra Casting porque o que acontece.5 Convers˜ ao / “Casting” Python usa tipagem forte.

nome.. ao contr´ ario de algumas. com a u ´ nica excess˜ ao da fun¸ ca ˜o interna print.. idade = 10) 27 . e vocˆ e pode dar valores espec´ ıficos para argumentos opcionais fora da localiza¸ c˜ ao deles. Vejamos: >>> def mostra_informacoes (obrigatorio. o que d´ a uma grande flexibilidade. o bloco que implementa a fun¸ ca ˜o tamb´ em ´ e demarcado pela indenta¸ ca ˜o. print "obrigatorio: %s\nnome: %s\nidade: %d" % (obrigatorio. nome = ’kov’..2 Passagem Avan¸ cada de Argumentos Os argumentos n˜ ao tˆ em tipo declarado. Declarar uma fun¸ ca ˜o em Python ´ e muito simples: >>> def minha_funcao (argumento): . >>> mostra_informacoes (’123’) obrigatorio: 123 nome: kov idade: 20 >>> mostra_informacoes (’123’. idade) .1 Sintaxe B´ asica Fun¸ co ˜es em python tem uma sintaxe muito parecida com qualquer outra linguagem. >>> minha_funcao (’123kokoko!’) 123kokoko! Como pode ser visto.. Os argumentos podem ter valores padr˜ ao.. O uso de parˆ enteses ´ e obrigat´ orio.. mesmo que n˜ ao aja argumentos. print argumento . idade=20): ..Cap´ ıtulo 5 Fun¸ c˜ oes 5.. tamb´ em. 5. nesses casos.

.... """ . b c.4 Documentando Uma caracter´ ıstica interessante do Python ´ e a possibilidade de documentar c´ odigo no pr´ oprio c´ odigo. inclusive. multiplica ele por si mesmo .. y): a = x + y b = x * y return a. multiplica ele por si mesmo e retorna o resultado .. n˜ ao precisa declarar o tipo de dado retornado: >>> ....3 Retorno da fun¸ c˜ ao Para retornar um (ou mais) valores em uma fun¸ ca ˜o basta usar a declara¸ ca ˜o return. Basta colocar uma string envolvida por sequˆ encias de trˆ es aspas: >>> def funcao (x): .. e retorna o resultado . como na passagem de parˆ ametros. . . . d = soma_e_multiplica (4... funcao (x) -> inteiro . """ . FUNC ¸ OES 5.. sem usar ferramentas externas.... retornar diversos valores e... recebe um inteiro. Vocˆ e pode. .28 obrigatorio: 123 nome: kov idade: 10 ˜ CAP´ ITULO 5. >>> >>> 9 >>> 20 def soma_e_multiplica (x.. 5) print c print d 5..... return x * x . >>> help (funcao) Help on function funcao in module __main__: funcao(x) funcao (x) -> inteiro recebe um inteiro..

Cap´ ıtulo 6 Classes Classes s˜ ao como id´ eias. o que ´ e mais correto no caso do Python) a um ente concreto. 6. A sintaxe ´ e muito simples: >>> . no C como estruturas ou structs.. quando se usa assim. . bastando atribuir algo. uma instˆ ancia dessa classe.nome = "kov" r. Se pensarmos como fil´ osofos podemos associar um objeto (ou uma instˆ ancia.2 M´ etodos Definir m´ etodos em classes Python ´ e uma quest˜ ao de definir uma fun¸ ca ˜o dentro da classe (a indenta¸ ca ˜o marca o bloco. .. O Python por incr´ ıvel que pare¸ ca n˜ ao tem uma estrutura de dado como essa. >>> >>> >>> >>> kov class registro: nome = "" idade = 0 r = registro () r. um indiv´ ıduo. 6..idade = 10 print r. ´ e que vocˆ e pode criar novos “membros” dentro da classe a qualquer momento. e Jos´ e da Silva. lembre-se)..1 Criando estruturas em Python No Pascal s˜ ao conhecidos como registros.nome A u ´ nica diferen¸ ca existente entre uma classe e uma estrutura.. uma classe. O exemplo cl´ assico ´ e pensar em ser humano. S˜ ao um dos pilares da orienta¸ c˜ ao a objetos. Para implementar algo similar a um registro ´ e necess´ ario usar uma classe.. O importante ´ e que o nome 29 . um exemplar dessa classe.

. Ele ´ e chamado quando vocˆ e instancia um objeto.... Esse m´ ´ e an´ alogo ao construtor de outras linguagens. que definimos acima assim: >>> class coisa (registro. self. mas n˜ ao precisa ser passado como argumento quando for chamar o m´ etodo.... >>> c = coisa () >>> c.. Podemos. print "eu coiso. def imprimir (self.. oque): . 6. print oque . definir uma nova classe que herda as caracter´ ısticas de registro e humano.. e os argumentos passados na chamada de instancia¸ ca ˜o s˜ ao passados para esse m´ etodo." .3 Heran¸ ca O Python permite heran¸ ca de classes..imprimir (oque) . def coisar (self): .. ent˜ ao.. ele coisa.humano): .falar ("qualquer coisa") qualquer coisa etodo Existe um m´ etodo especial para toda classe... ´ E e poss´ ıve herdar uma classe apenas..falar ("abc") abc ´ claro... bastando colocar seu nome entre parˆ enteses. >>> eu = humano () >>> eu. def falar (self. . CLASSES que vocˆ e passar como primeiro argumento para um m´ etodo representa o pr´ oprio objeto (an´ alogo ao this de outras linguagens).30 CAP´ ITULO 6. oque): . tu coisas. Um exemplo: >>> class humano: . chamado init .

abre para leitura. para criar esse objeto usando a fun¸ ca ˜o open. mas abre para leitura e escrita. ent˜ ao vamos ver aqui como fazer. mantendo o conte´ udo e posiciona o cursor no final do arquivo. Uma das primeiras coisas que eu procuro fazer quando aprendo uma linguagem ´ e abrir.txt’.write (’meu teste de escrever em arquivo\nmuito legal’) >>> arq. Os modos poss´ ıveis s˜ ao: “w” para apagar o que existir e abrir para escrita (cria o arquivo se n˜ ao existir). O 31 .readline () ’’ >>> arq. n˜ ao ´ e necess´ ario especificar o modo de abertura quando s´ o se quer ler.txt’) >>> arq. Para ler um arquivo: >>> arq = open (’/tmp/meuarquivo. “r”. e o segundo ´ e o modo como ele ser´ a aberto. “w+” faz o mesmo que “w”. O m´ etodo write da instˆ ancia do objeto arq est´ a sendo usado para gravar a string no arquivo.close () O primeiro argumento de open ´ e o nome do arquivo. A fun¸ ca ˜o open assume o segundo argumento como sendo “r”. “a” abre o arquivo para escrita. que ser´ a muito familiar para programadores da linguagem C: >>> arq = open (’/tmp/meuarquivo. mas abre para escrita e leitura.read () ’meu teste de escrever em arquivo\nmuito legal’ >>> arq. Um arquivo aberto ´ e um objeto.seek(0) >>> arq. ler e gravar em um arquivo.Cap´ ıtulo 7 Arquivos / IO Lidar com arquivos em Python ´ e coisa muito simples. “a+” faz o mesmo que “a”. Vocˆ e pode usar a mesma nota¸ ca ˜o usada com print entre os parˆ ametros do m´ etodo (na verdade vocˆ e pode usar a nota¸ ca ˜o do print em qualquer lugar que receba uma string). ’w’) >>> arq.readline () ’meu teste de escrever em arquivo\n’ Como podemos ver.

ARQUIVOS / IO m´ etodo read() lˆ e o arquivo completo. O m´ etodo close() seria usado nesse caso. tamb´ em. como vemos na quarta linha. O m´ etodo seek() serve para posicionar o cursor no arquivo e a readline() serve para ler uma linha apenas. e qualquer tentativa de leitura resulta em uma string vazia. .32 CAP´ ITULO 7. como podemos ver.

com.Cap´ ıtulo 8 Leitura Recomendada O Gustavo Barbieri escreveu um curso de Python que vai mais fundo em alguns conceitos e pode ser uma ´ otima referˆ encia para continuar indo em frente no seu aprendizado.gustavobarbieri. 33 . Veja em http://www.br/python/aulas_python/.