Você está na página 1de 21

Por: Fbio Rizzo Matos [Entre em contato com o autor ]

Membro ativo da Comunidade Python/Zope e Plone, para qual escreve diversos artigos. Arquiteto de Software e Desenvolvedor, trabalha atualmente na ThreePointsWeb (contato@threepointsweb.com), empresa especializada em desenvolvimento e treinamentos Python, Zope e Plone, realizando treinamentos e consultorias em Plone. Mantenedor do site http://www.fabiorizzo.com alm de responsvel pela traduo de contedo.

Introduo ao Python - Parte 1


Neste artigo, iremos aprender como utilizar os mais diversos tipos de objetos que o Python dispe, como strings, listas, dicionrios e outros.

Publicado em: 29/12/2004 Compartilhe

1 - Tipos de Objetos Neste artigo, iremos aprender como utilizar os mais diversos tipos de objetos que o Python dispe, como strings, listas, dicionrios e outros. 1.1 - Uso de Strings No Python, strings so seqencias imutveis de caracteres. Eles so imutveis devido ao fato que para se modificar uma String seja necessrio a criao de outra String.

>>> minhastring='Fabio Rizzo' >>> minhastring 'Fabio Rizzo'


Podemos Declarar uma String de vrias formas:

String='Fabio Rizzo' String="Fabio Rizzo" >>> String="""Fabio Rizzo em vrias linhas """ >>> print String Fabio Rizzo em vrias linhas
Em Python, uma String uma seqencia de letras, endereada de forma que voc possa ter acesso a qualquer valor dessa seqencia. Os endereamentos comeam a ser contados do zero. Utilizamos essa sintaxe para ter acesso a um valor em especfico dentro da String:

String[IS:FS:IS]
onde IS = Inicio do endereo, FS = Fim do endereo e IS = Incremento.

Vamos mapear os endereos da minhastring, que tem o valor Fabio Rizzo:

Agora se quisermos ver o endereo dois da minhastring que tem o valor b fazemos o seguinte comando:

>>> minhastring[2] 'b'


E se quisermos somente o nome Fabio? Devemos fazer assim:

>>> minhastring[:5] 'Fabio'


Nesse caso nos falamos pro Python que ns queremos todos os valores at o endereo 5. No podemos esquecer o detalhe que a o interpretador Python entende o ltimo endereo -1. Isso significa que se quisermos todos os valores at o endereo 6 devemos fazer minhastring[:7], porque o interpretador ir pegar todos parando quando chegar no endereo 7. Para ns pegarmos somente o sobrenome Rizzo devemos fazer:

>>> minhastring[6:] 'Rizzo'


ou

>>> minhastring[6:11] 'Rizzo'


Ambos funcionam corretamente, somente cabendo a voc, a melhor forma de utiliza-los. E se quisermos pegar todos os valores utilizando incremento de 2? Fazemos assim:

>>> minhastring[::2] 'FboRzo'


Poderamos pegar do 6 valor para frente incrementando em 2 tambm. Veja s:

>>> minhastring[6::2] 'Rzo'


Quando no definimos qual o ponto final na seqencia, o interpretador Python entende que voc quer toda a seqencia. Podemos tambm inverter uma seqencia:

>>> minhastring[::-1] 'ozziR oibaF'


Utilizando o operador negativo, ns invertemos a ordem de contagem dos endereos, e o Python passa a contar ao contrrio.

E pegando apenas o nome Fabio ao contrrio, fazemos o seguinte:

>>> minhastring[4::-1] 'oibaF'


Podemos concatenar uma String em outra muito simplesmente, veja s:

>>> sobrenome="Matos" >>> nomecompleto=minhastring+' '+sobrenome >>> print nomecompleto Fabio Rizzo Matos
Vamos Detalhar essa parte do cdigo:

nomecompleto=minhastring+' '+sobrenome
Nesse caso ns pegamos a contante nomecompleto e colocamos dentro dela os valores de minhastring, um espao em branco e os valores de sobrenome. Lembrando que no podemos concatenar valores de String com inteiros, ou strings com qualquer outro tipo de dados sem ser String. Veja abaixo:

>>> idade=int(22) >>> teste=nomecompleto+' '+idade Traceback (most recent call last): File "<pyshell#52>", line 1, in -toplevelteste=nomecompleto+' '+idade TypeError: cannot concatenate 'str' and 'int' objects
Declarei idade como inteiro e tentei concatenar o seu valor com nomecompleto. O Python retornou uma mensagem de erro, explicando que no permitido concatenar str(String) com int(inteiro). Perceba que foramos a idade a ser int como acima. idade=int(22).

Introduo ao Python - Parte 1


Neste artigo, iremos aprender como utilizar os mais diversos tipos de objetos que o Python dispe, como strings, listas, dicionrios e outros.

Publicado em: 29/12/2004 Compartilhe

Podemos utilizar alguns mtodos sobre strings como os abaixo:

Mtodo

Para que serve Deixa a primeira inicial maiscula.

Exemplo >>> x='fabio'

x.capitalize()

>>> x.capitalize() 'Fabio' >>> x='fabio' >>> x.count("fa") 1

x.count()

Procura quantas ocorrncias da busca existem na String.

>>> x='fabio' x.startswith() Verifica se a String inicia com determinado caractere, retornando verdadeiro ou falso. >>> x.startswith("fa") True >>> x.startswith("ri") False >>> x='fabio' Verifica se a String >>> x.endswith("io") termina com determinado caractere, True retornando verdadeiro >>> x.endswith("fa") ou falso. False >>> x='22fabio' Verifica se a String tem >>> x.isalnum() contedo alfa-numrico True >>> x='22fabio' >>> x.isalpha() x.isalpha() Verifica se a String tem False o contedo apenas >>> x='fabio' alfabtico >>> x.isalpha() True >>> x='fabio' Verifica se a String tem >>> x.islower() o contedo minsculo. True >>> x='fabio' Verifica se a String tem o contedo em >>> x.isupper() maisculo False >>> x='FABIO' Converte o contedo da >>> x.lower() String para minsculo. 'fabio' >>> x='fabio' Converte o contedo da >>> x.upper() String para maisculo. 'FABIO'

x.endswith()

x.isalnum()

x.islower()

x.isupper()

x.lower()

x.upper()

>>> x='Fabio' >>> x.swapcase() x.swapcase() Inverte a situao da String. 'fABIO' >>> x='fABIO' >>> x.swapcase() 'Fabio' Converte para >>> x='fabio rizzo matos' maiscula todos os >>> x.title() primeiros caracteres da String. 'Fabio Rizzo Matos' Une duas ou mais strings utilizando um delimitador. Corta a String em uma lista, utilizando o espao como delimitador. Corta a String em uma lista, utilizando o ponto-e-vrgula como delimitador. >>> ";".join(("fabio","rizzo")) 'fabio;rizzo' >>> x='Fabio Rizzo Matos' >>> x.split() ['Fabio', 'Rizzo', 'Matos'] >>> x='Fabio;Rizzo;Matos' >>> x.split(";") ['Fabio', 'Rizzo', 'Matos']

x.title()

.join()

x.split()

x.split(;)

x.ljust(tamanho)

>>> x='Fabio' Ajusta a String para a esquerda utilizando um >>> x.ljust(10) tamanho determinado. 'Fabio ' Ajusta a String para a direita utilizando um tamanho determinado. Ajusta a String para o centro utilizando um tamanho determinado. >>> x='Fabio' >>> x.rjust(10) ' Fabio' x='Fabio' >>> x.center(10) ' Fabio '

x.rjust(tamanho)

x.center(tamanho)

x.lstrip()

Remove os espaos em >>> x=' Fabio ' branco do lado >>> x.lstrip() esquerdo de uma 'Fabio ' String. >>> x=' Fabio ' Remove os espaos em branco do lado direito >>> x.rstrip() de uma String. ' Fabio'

x.rstrip()

x.strip()

Remove todos os espaos em branco de uma String Procura por uma ocorrncia de determinado caractere em um String, e retorna o seu endereo dentro da String. Retornando -1 indica que no existe tal caractere na String. Procura por um caractere e substitui por outro.

>>> x=' Fabio ' >>> x.strip() 'Fabio' >>> x='Fabio Rizzo' >>> x.find("Rizzo") 6 >>> x.find("joao") -1

x.find(parmetro)

x.replace(busca,substitui)

>>> x.replace('Mattos','Matos') 'Fabio Rizzo Matos'

Introduo ao Python - Parte 1


Neste artigo, iremos aprender como utilizar os mais diversos tipos de objetos que o Python dispe, como strings, listas, dicionrios e outros.

Publicado em: 29/12/2004 Compartilhe

1.3 - Tuplas

Tuplas so listas imutveis, ou seja, no possvel modifica-la sem antes ter de criar uma nova. Um exemplo de tupla

>>> tupla = ("fabio","rizzo","matos") >>> tupla ('fabio', 'rizzo', 'matos')

Tuplas so mais rpidas que listas, e se voc pretende ter apenas uma sequencia de valores imutveis, utilize tuplas a Tuplas no tem mtodos atribudos a ela, por isso no possvel utilizar nenhum dos mtodos de listas em tuplas. 1.4 - Dicionrios

Dicionrio um tipo de dado que permite criar uma relao entre chaves e valores. O sistema de localizao dos valor e por ela que devemos procurar os valores.

>>> cadastro={'Nome':'Fabio Rizzo','idade':'22'} >>> cadastro {'idade': '22', 'Nome': 'Fabio Rizzo'}
No exemplo acima definimos a chave nome o valor Fabio Rizzo e a chave idade o valor 22.

>>> cadastro['idade'] '22' >>> cadastro['Nome'] 'Fabio Rizzo'

Vimos acima como ver os valores da chave idade e da chave Nome. Para adicionarmos uma nova chave e um novo va

>>> cadastro['Signo']="Leo" >>> cadastro {'idade': '22', 'Signo': 'Le\xe3o', 'Nome': 'Fabio Rizzo'}

Dessa forma adicionamos uma nova chave e valor ao dicionrio cadastro. E para alterarmos um valor de uma determin

>>> cadastro {'idade': '22', 'Signo': 'Le\xe3o', 'Nome': 'Fabio Rizzo'} >>> cadastro['Nome']="Fabio Rizzo Matos" >>> cadastro {'idade': '22', 'Signo': 'Le\xe3o', 'Nome': 'Fabio Rizzo Matos'}

Atento ao detalhe que os dicionrios so case-sensitive, ou seja, temos que perguntar exatamente pela sua chave, sen

>>> cadastro['nome'] Traceback (most recent call last): File "<pyshell#14>", line 1, in -toplevelcadastro['nome'] KeyError: 'nome'
Tivemos esse erro porque no existe chave nome e sim Nome. Para removermos uma determinada chave devemos utilizar o mtodo del. Veja:

>>> cadastro {'idade': '22', 'Signo': 'Le\xe3o', 'Nome': 'Fabio Rizzo Matos'} >>> del cadastro['Signo'] >>> cadastro {'idade': '22', 'Nome': 'Fabio Rizzo Matos'}
Ou utilizar o mtodo clear(), que elimina todas as chaves e valores de um dicionrio.

>>> cadastro {'idade': '22', 'Nome': 'Fabio Rizzo Matos'} >>> cadastro.clear() >>> cadastro {}
Existem outros mtodos que podem ser usados em dicionrios. Veja abaixo:

Mtodo

Para que serve

Exemplo >>> dicionario={'Nome':'Fabio Rizzo Matos','idade':'22'} ['idade', 'Nome'] >>> dicionario {'idade': '22', 'Nome': 'Fabio Rizzo Matos'} >>> dicionario.has_key('Cor')

dicionario.keys()

Mostra quais chave o dicionrio tem. >>> dicionario.keys()

dicionario.has_key(chave)

Verifica se o dicionrio tem a chave procurada.

False >>> dicionario["cor"]="Branca" >>> dicionario.has_key('cor') True

>>> dicionario Retorna uma lista de tuplas contendo chave e valor. {'idade': '22', 'cor': 'Branca', 'Nome': 'Fabio Rizzo Matos'} >>> dicionario.items() [('idade', '22'), ('cor', 'Branca'), ('Nome', 'Fabio Rizzo Matos')]
1.5 - Formatando Strings possvel formatar o valor de uma string. Veja:

dicionario.itens()

>>> nome="Fabio" >>> sobrenome="Rizzo" >>> print "Meu Nome : %s, e meu sobrenome : %s" % (nome,sobrenome) Meu Nome : Fabio, e meu sobrenome : Rizzo
Podemos dizer que existe uma "formula" para se formatar strings. Podemos utilizar dessa forma:

print "string %tipo" % varivel

Onde string o texto a ser visualizado, %tipo o formato do dado (explicaremos mais adiante), e % varivel, a vari de %tipo.

>>> nome = 'fabio' >>> sobrenome = 'rizzo' >>> print sobrenome + " o sobrenome do " + nome rizzo o sobrenome do fabio
Tambm podemos concatenar as strings como acima. E para formatar nmeros utilizamos dessa forma:

>>> print "O valor do sapato : %f" % 12.57 O valor do sapato : 12.570000
Ou podemos melhorar essa expresso utilizando uma varivel:

>>> valor=12.57 >>> print "O valor do sapato : %f" % valor O valor do sapato : 12.570000

Este um exemplo utilizando o operador Float (f). Nesse exemplo apareceram muitos zeros depois de 12.57, que pode forma:

>>> print "O valor do sapato : %.2f" % valor O valor do sapato : 12.57

Utilizando o conceito de .x podemos determinar quantas casas decimais deve aparecer o valor, como no exemplo acim decimais.

%.2f
E utilizando y. Podemos determinar que o valor aparea com y caracteres.

>>> print "O valor do sapato : %10.2f" % valor

O valor do sapato : 12.57

Nesse caso formatamos a string para ter dez espaos de preenchimento, mais que mostre somente duas casas decima Mais poderamos colocar um sinal de + no final do valor indicando ser positivo assim:

>>> print "O valor do sapato : %+10.2f" % valor O valor do sapato : +12.57
Tipos de Formatao:

Caractere(s)

Resultado da Formatao

Exemplo >>> nome 'fabio' >>> print "Meu nome %s" %nome Meu nome fabio >>> print "Meu nome %r" %nome Meu nome 'fabio' >>> idade=22 >>> print "Minha idade : %d" % idade

%s, %r

String

%i, %d

Decimal Inteiro

Minha idade : 22 >>> print "Minha idade : %i" % idade Minha idade : 22 >>> valor=123.69 >>> print "Custou %f o sapato de couro" % valor

%f, %F

Decimal Floating

Custou 123.690000 o sapato de couro >>> print "Custo %F o sapato de couro" % valor Custo 123.690000 o sapato de couro

1.6 - Entrada de Dados No Python podemos fazer uma varivel conter um valor digitado atravs de um prompt. Veja:

>>> nome=raw_input("Qual o seu nome: ") Qual o seu nome: Fabio >>> nome

'Fabio'

Porm por padro o raw_input sempre retorna uma string. Para no retornarmos uma string devemos converter. Veja inteiro (tambm poderia ser float ou outro)

>>> idade=int(raw_input("Qual a sua idade: ")) Qual a sua idade: 22 >>> idade 22 >>> type(idade) <type 'int'>

Introduo ao Python - Parte 2 Continuando a srie de artigos sobre Python, vamos aprender um pouco de estruturas controladas e tratam Publicado em: 19/01/2005 Compartilhe Continuando a srie de artigos sobre Python, vamos aprender um pouco de estruturas controladas e tratam A primeira parte desse tutorial se encontra disponvel nesse site ou em meu site no endereo: http://www.fabiorizzo.com/artigos/python/introducaopython01/view interessante que voc tenha visto a primeira parte desse artigo para poder facilitar o seu entendimento. 2 - Estruturas Controladas 2.1 - Se (IF) Utilizamos o if quando queremos testar uma condio e executar determinado cdigo. A sintaxe do if : if condio: executa cdigo elif: executa cdigo else: executa cdigo Veja um exemplo abaixo:

>>> estado = "sp" >>> if estado == "sp": ... print "Voce mora em so paulo" ... elif estado == "rj": ... pr janeiro" ... else: ... print "Seu estado no esta cadastrado" ... Voce mora em so paulo

Como Voc pode perceber tudo esta usando indenteao, ou seja , elif embaixo do if que por sua vez esta e totalmente alinhado. 2.2 - Enquanto (While)

While uma estrutura de repetio que executa um bloco de instrues enquanto uma condio for satisfe Veja um exemplo:

>>> resposta = "repetir" >>> while resposta == "repetir": ... print "Oi, estamos dentro do while" ... resp raw_input("Digite repetir para comear novamente: ") ... Oi, estamos dentro do while Digite repetir para c repetir Oi, estamos dentro do while Digite repetir para comear novamente: tchau! 2.3 - Para (For)

O uso do for no Python permite que possamos interagir com seqencias. Essas seqencias podem ser strin dicionrios. Exemplo:

>>> valores=[111,222,333,444,555] >>> for valor in valores: print 'O valor : ', valor O valor : 111 O va 333 O valor : 444 O valor : 555 Nesse Caso varremos uma lista, porm poderamos ter feito com uma tupla da mesma forma. Para interagir com um dicionrio podemos fazer dessa forma:

>>> dic={'Nome':'Fabio','Sobrenome':'Rizzo'} >>> for nomes in dic: print '%s %s' % (nomes,dic[nomes Nome Fabio Podemos usar como regra a seguinte sintaxe: Para X em Y: faa ou em Python for x in y: execute. No se esquea da indentao do cdigo, pois somente assim o for ir funcionar. 2.4 - Funo Range() Esta funo muito importante quando queremos gerar uma lista de nmeros. Sua sintaxe : range(ni,nf,i) onde ni = nmero inicial, nf = nmero final e i = incremento. Veja um exemplo: >>> range(1,10) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1,10,2) [1, 3, 5, 7, 9] Podemos utilizar o range dentro de um for da seguinte maneira: >>> for numero in range(1,10): print numero*2 2 4 6 8 10 12 14 16 18 2.5 - Break Utilizamos o comando break quando queremos interromper um for ou um while. Exemplo:

palavras=('casa','carro','sexo') for palavra in palavras: if palavra == "sexo": print "Palavra Proibida. - Pal break

Neste exemplo, ao varrer a seqencia e encontrar uma palavra sexo, ele nos da um alerta e aborta a seqe 3 - Tratamentos de Erros 3.1 - Try/Except Podemos tratar os nossos erros no Python muito facilmente. Exemplo: >>> try: ... x = y ... except: ... print "Y no foi definida" ... Y no foi definida

Dessa forma podemos trabalhar a possibilidade de erros em nossos programas e gerar mensagens de erro como abaixo: >>> try: ... x = y ... except: ... print "Y no estava definida, ento defini pra voc!" ... x=10 ... print x ... Y

ento defini pra voc! 10

Em breve falarei sobre a terceira parte de meu artigo onde vamos aprender como utilizar as funes e md aplicativos Python. At mais Introduo ao Python - Parte 3

Neste terceiro artigo da srie, Introduo ao Python, vamos aprender como utilizar as funes e mdulos e Python.

Publicado em: 26/01/2005 Compartilhe Neste terceiro artigo da srie, Introduo ao Python, vamos aprender como utilizar as funes e mdulos e Python.

A primeira e a segunda parte desse tutorial se encontra disponvel nesse site ou em meu site no endereo:

y y

http://www.fabiorizzo.com/artigos/python/introducaopython01/view http://www.fabiorizzo.com/artigos/python/introducaopython02/view

interessante que voc tenha visto a primeira e a segunda parte desse artigo para poder facilitar o seu en 4 - Funes / Mdulos 4.1 - Usando Funes

Utilizamos funes quando precisamos executar um bloco de cdigo diversas vezes, fazendo assim o reuso assim alterar uma funo usada uma dezena de vezes apenas uma nica vez. Vamos elevar um nmero ao quadrado. Veja exemplo: >>> def eleva(x): return x**2 Usando a funo: >>> eleva(3) 9 A utilizao da sintaxe de uma funo : def nome_funo(parametro1,parametro2,....): executa cdigo com os parametros. Como vimos possvel utilizar uma funo sobre vrios parmetros. Veja: >>> def elevadois(x,y): return x**y Executando a funo: >>> elevadois(3,3) 27 Nesse exemplo, nos elevamos x a y, passando dois parmetros para a funo.

Podemos tambm utilizar funes sobre textos e qualquer outro objeto do Python, no sendo necessariam

>>> def mostra_mensagens(msg, quantidade): for quantidades in range(quantidade): print '%s %d' % (

Chamando a Funo:

>>> mostra_mensagens("Mensagem Numero: ",3) Mensagem Numero: 0 Mensagem Numero: 1 Mensage

Podemos tambm criar funes com parmetros pr-definidos, caso no informe nenhum valor a funo. V acima e caso no coloque quantidade de mensagens, a funo retorne 5 mensagens. Veja:

>>> def mostra_mensagens(msg,quantidade=5): for quantidades in range(quantidade): print '%s %d' % Chamando a funo:

>>> mostra_mensagens("Mensagem Numero:") Mensagem Numero: 0 Mensagem Numero: 1 Mensagem N Numero: 3 Mensagem Numero: 4 Como no informamos a quantidade de mensagens ele uso o padro, que 5. Podemos utilizar uma funo que alm de ter infinitos argumentos, gere variveis com valores. Veja:

>>> def listadeargumentos(*argumentos, **bargumentos): print 'Argumentos: ', argumentos print 'Varia bargumentos print '=' * 85 Chamando a Funo:

>>> listadeargumentos('fabio','rizzo',variavel1='variavel 01', variavel2='variavel 02') Argumentos: ('fabi Argumentos: {'variavel2': 'variavel 02', 'variavel1': 'variavel 01'} =====================================================================

Nesta funo podemos perceber que quando queremos ter argumentos infinitos utilizamos *argumentos , antes da declarao. Perceba, que geramos uma lista com os dados. E para utilizao de argumentos infini dicionrio use **argumentos, utilizando dois ** asteriscos. 4.2 - Usando Mdulos

Quando desenvolvemos programas, temos que criar diversas funes e as vezes necessitamos de utiliza-la do programa. E para isso criamos arquivos com "pacotes" de funes e rotinas que importamos para dentr fazendo assim reuso de cdigo. Vamos criar uma funo que mostra o nosso nome:

>>> def mostra_nome(nome): ... print "O seu nome eh: ",nome ... >>> mostra_nome("Fabio Rizzo") O se

Imagine se tivssemos 15 arquivos onde seja necessrio o uso dessa funo? Ou queremos deixar o cdig fazemos? Vamos colocar essa funo dentro de um arquivo chamado funcoes.py. O arquivo vai ficar assim: >>> def mostra_nome(nome): ... print "O seu nome eh: ",nome Agora vamos importar o arquivo, veja abaixo: >>> import funcoes >>> funcoes.mostra_nome("Fabio Rizzo") O seu nome eh: Fabio Rizzo Depois de importado, utilizamos a seguinte sintaxe:

modulo.funo Porm, existem outras formas de importar um mdulo. Veja s: from funcoes import mostra_nome

Dessa forma falamos que vamos importar do mdulo funes somente a funo mostra_nome. Se importa utilizaremos vrgula para separar as funes. Podemos usar apelidos como abaixo: >>> import funcoes as func >>> func.mostra_nome("Fabio Rizzo") O seu nome eh: Fabio Rizzo Fabio Rizzo Matos www.fabiorizzo.com fabio@fabiorizzo.com Introduo ao Python - Parte 4

Este o quarto e ltimo artigo da srie Introduo ao Python. Vamos aprender nele o conceito de Classes, Orientao a Objetos. Publicado em: 04/02/2005 Compartilhe

Este o quarto e ltimo artigo da srie Introduo ao Python. Vamos aprender nele o conceito de Classes, Orientao a Objetos. 5 - Classes 5.1 - Definindo uma Classe

Python trabalha com o conceito de classes muito facilmente. Existem outras formas de criar classes , porm nesse livro. Vamos definir uma classe:

>>> class inicial: ... def __init__(self,nome): ... self.nome = nome ... def mostra(self): ... print 'Class inici self.nome ... Definindo e chamando a classe: >>> objeto = inicial('Fabio') >>> objeto.mostra() Class inicial - Nome: Fabio 5.2 - Herana Podemos definir uma classe que herda informaes de uma outra classe. Veja: Objeto Principal: Classe Inicial:

>>> class inicial: ... def __init__(self,nome): ... self.nome = nome ... def mostra(self): ... print 'Class inici self.nome ... Objeto que vai herdar: herdada.

>>> class herdada(inicial): ... def __init__(self,nome,idade): ... inicial.__init__(self,nome) ... self.upper = self.idade = idade ... def mostra(self): ... inicial.mostra(self) ... print 'Classe herdada - Nome Maiusculo: % self.idade >=18: ... print "maior de idade" ... else: ... print "menor de idade" ... def idade(self): ... return se Instanciando o Objeto e chamando a classe:

>>> objeto1 = inicial("Fabio") >>> objeto1.mostra() Class inicial - Nome: Fabio >>> objeto2 = herdada( objeto2.mostra() Class inicial - Nome: Fabio Classe herdada - Nome Maiusculo: FABIO maior de idade

5.3 - Classe de dados

Veja um exemplo de como implementar uma classe que realiza o armazenamento do valor em todas as sua exemplo foi retirado do faq do python.

>>> class c: ... count = 0 ... def __init__(self): ... c.count = c.count +1 ... def getcount(self): ... return c.co >>> print "valor atual", c1.getcount() valor atual 1 >>> print "valor atual", c1.getcount() valor atual 1 >> "valor atual", c2.getcount() valor atual 2 >>> c3 = c() >>> print "valor atual", c3.getcount() valor atual 3

E assim finalizamos os artigos de Introduo ao Python. Espero que tenham gostado e conto com sua opin melhorias, novos artigos e tirar as suas dvidas! Grande Abrao, Fabio Rizzo Matos www.fabiorizzo.com fabio@fabiorizzo.com Debugando o Python Neste artigo, iremos aprender como debugar nossos programas em python utilizando o mdulo pdb. Publicado em: 11/07/2005 Compartilhe Apoio: Dorneles Tremea e Rodrigo Senra

Escrever programas no python muito fcil e simples. Descobrir erros nesses programas tambm ! Neste aprender como debugar nossos programas em python utilizando o mdulo pdb.

O Mdulo pdb (Python Debugger) foi feito para debugar os programas, utilizando alguns comandos. Esse a mais a fundo do pdb, mais sim, uma breve introduo ao seu uso. Iniciando o pdb

Para iniciarmos o uso no pdb, devemos ter um programa para testar. Crie um arquivo chamado exemplo1.p contedo:

# Definindo as variaveis nome = "Fabio" sobrenome = "Rizzo" site = "http://www.fabiorizzo.com variaveis junto = "Meu nome eh %s %s, e meu site eh o: %s" %(nome,sobrenome,site) # Imprimindo a

Este um simples programa. Vamos agora chamar a biblioteca pdb neste programa. Adicione a seguinte li programa import pdb E agora, vamos adicionar um ponto em nosso programa, para realizarmos o rastreamento para o debug. pdb.set_trace() O cdigo do programa devera est igual a este:

# Importando o Modulo import pdb # definindo o rastreamento pdb.set_trace() # Definindo as variaveis sobrenome = "Rizzo" site = "http://www.fabiorizzo.com" # concatenando as variaveis junto = "Meu meu site eh o: %s" %(nome,sobrenome,site) # Imprimindo a variavel print junto Agora no prompt de comando execute o programa, como abaixo: fabiorizzo@darkdarkness:~/artigos/debugando_python$ python exemplo1.py >

/home/fabiorizzo/artigos/debugando_python/exemplo1.py(10)?() -> nome

= "Fabio"

Ao executar o programa, colocamos o pdb.set_trace() antes da definio das variaveis, assim, logo depois set_trace() foi feita, caimos em um prompt, mostrando a prxima ao.

A prxima ao nesse caso nome = "Fabio" . O pdb est esperando um comando nosso sobre o que fazer nosso programa est parado e aguardando.

Ns iremos executar o comando n, que significa next. Esse comando faz com que o pdb execute a prxima exemplo: nome = "Fabio" . (Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(11)?() -> sobrenome = "Rizzo"

Baseado no nosso comando anterior, o n, podemos verificar que a prxima instruo : sobrenome = "Rizz ver onde est instruo ser executada no cdigo. Para isso, iremos utilizar o comando l de list. Veja:

(Pdb) l 6 pdb.set_trace() 7 8 9 # Definindo as variaveis 10 nome = "Fabio" 11 -> sobren site = "http://www.fabiorizzo.com" 13 14 # concatenando as variaveis 15 junto = "Meu nome eh o: %s" %(nome,sobrenome,site) 16 Veja que o pdb nos mostra o cdigo, onde est a nossa instruo (indicado pela seta) e o nmero da linha Depois de olharmos o cdigo, decidimos ir para a prxima instruo. Novamente, utilizamos o comando n (Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(12)?() -> site

= "http:/

Podemos ver a qual ser a instruo, e com isso, vamos ir para a prxima. Contudo, o pdb tem um recurso enter para repetir o ltimo comando realizado dentro do debug. Como o nosso ltimo comando feito foi o n pressionarmos o enter, o comando executado o n. O mesmo seria para os demais comandos do pdb. (Pdb) > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(15)?() -> junto %s" %(nome,sobrenome,site)

= "Meu nome eh %

Percebemos que a prxima instruo utiliza o contedo das variveis que definimos anteriormente no prog gostaramos de saber qual o valor dessas variveis. Para isso, utilizamos o comando p. Veja: (Pdb) p nome 'Fabio' (Pdb) p sobrenome 'Rizzo'

Como visto acima, muito fcil visualizar o contedo das variavis. Vamos visualizar o nosso cdigo agora

(Pdb) l 10 nome = "Fabio" 11 sobrenome = "Rizzo" 12 site = "http://www.fabiorizzo.co concatenando as variaveis 15 -> junto = "Meu nome eh %s %s, e meu site eh o: %s" %(nome,sobrenom Imprimindo a variavel 18 print junto 19 [EOF]

Veja esse [EOF], que nada mais que a indicao do fim do arquivo. Vamos tentar ver o contedo da vari (Pdb) p junto *** NameError: <exceptions.NameError instance at 0xb7e2cdcc>

Este erro ocorreu, porque a varivel junto ainda no foi atribuida. Vamos continuar a execuo do program do pdb. Para isso usamos o comando c. E o comando q do pdb, sai do programa. (Pdb) c Meu nome eh Fabio Rizzo, e meu site eh o: http://www.fabiorizzo.com

Esses so alguns recursos que o pdb nos proporciona. Porm existe uma forma de entrarmos dentro do va Para isso, vamos mudar o cdigo de nosso programa para: import pdb # Criando uma funcao para teste def mudatudo(nome,sobrenome):

novonome = nome.repl

novosobrenome = sobrenome.replace('Rizzo','Tremea') return novonome + novosobrenome # definind pdb.set_trace() # Definindo as variaveis nome = "Fabio" sobrenome = "Rizzo" site = "http://ww concatenando as variaveis #junto = "Meu nome eh %s %s, e meu site eh o: %s" %(nome,sobrenome,sit mudatudo(nome,sobrenome) # Imprimindo a variavel print junto Agora, com o cdigo modificado, vamos executar o nosso programa.

fabiorizzo@darkdarkness:~/artigos/debugando_python$ python exemplo1.py > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(14)?() -> nome = "Fabio" (Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(15)?() -> sobrenome = "Rizzo" (Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(16)?() -> site = "http://www.fabiorizzo. /home/fabiorizzo/artigos/debugando_python/exemplo1.py(21)?() -> junto = mudatudo(nome,sobrenom

Como voc pode ver, ns fomos chamando as instrues, chegamos na instruo junto = mudatudo(nome, mais que uma funo. Se executarmos o comando n, ns iremos passar para a prxima instruo, mais n o que a funo mudatudo faz. Nesse caso, executamos o comando s , que ns leva pra dentro da funo.

(Pdb) s --Call-- > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(5)mudatudo() -> def mudatudo(nome,sobrenome): (Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(6)m = nome.replace('Fabio','Dorneles') (Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py novosobrenome = sobrenome.replace('Rizzo','Tremea') (Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(8)mudatudo() -> return novonome + novoso Return-- > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(8)mudatudo()->'DornelesTremea novosobrenome

Como vimos acima, pudemos navegar dentro da funo, at o momento em que podemos ver o seu resulta

(Pdb) n > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(24)?() -> print junto (Pdb) p junt (Pdb) n DornelesTremea --Return-- > /home/fabiorizzo/artigos/debugando_python/exemplo1.py(24)?() (Pdb) n

Bem, com isso, ns terminamos a nossa introduo ao pdb. Sintam-se a vontade para comentar o artigo, m ou crticas.

Um agradecimento especial a Dorneles Trema e Rodrigo Senra, grandes amigos que me ajudaram a enten funciona, e com isso, poder escrever este artigo. Um abrao,