Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Comparando os tipos de variáveis

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui



Como o python tem a tipagem dinâmica, às vezes é necessário descobrir de que tipo é uma variável. Para iss ovamos aprender a compara uma variável com um tipo!

Comparando os tipos de variáveis



Espero que todos se lembrem da função type pois vamos usá-la agora. Para compara o tipo da variável basta você usar a função type e saber o nome de todos os tipos. Basicamente você precisam saber os seguintes tipos:

  • str;
  • dict;
  • list;
  • tuple;
  • int;
  • float;


A comparação será feita da seguinte forma:
Código :
if type(variavel) == tipo:
 #faz algo
Vamos ver um exemplo disso:
Código :
var = input("Informe uma variavel para ser analisada: ")
tipo = type(var)
if tipo == int:
    print 'Você infomrou um numero inteiro.'
elif tipo == float:
    print 'Você infomrou um numero ponto flutuante.'
elif tipo == str:
    print 'Você infomrou uma string.'
elif tipo == dict:
    print 'Você infomrou um dicionario.'
elif tipo == list:
    print 'Você infomrou uma lista.'
elif tipo == tuple:
    print 'Você infomrou uma tupla.'
else:
    print 'Desconheço esse tipo de variável.'
Como diria o Duke Nukem, "Piece of Cake"!!!
Até mais...

Atualizado 01-09-2010 em 09:14 por Magnun

Categorias
Artigos , Artigos , Cursos , Curso de Python

Comentários

  1. Avatar de lord4rk
    Ola Magnun!!
    Achei essa referencia e achei bem interessante!!

    Código :
    a = {}
    if type(a) == type({}):
        print 'Dicinario'
    else:
        print 'Nao e um dicionario'
    []'s
    Jr
  2. Avatar de Magnun
    Pois é cara, antes eu também fazia desse jeito até perceber o desperdício de memória e processamento que isso causa.

    Ao fazer type(a) == type({}) você:
    * executa o type(a) - o que ocupa alguns ciclos do processador;
    * cria um dicionário vazio (aloca memória) - mais alguns ciclos do processador;
    * executa a função type sobre o dicionário vazio - mais alguns ciclos do processador;
    * executa a comparação com o resultado de type(a) - isso também ocupa alguns ciclos do processador;
    * uma vez que o dicionário vazio ({}) não foi vinculado à nenhuma variável, ela será recolhida pelo "coletor de lixo" (garbage collector) do python depois de um tempo;
    * o garbage collector irá desalocar a memória do dicionário vazio- mais alguns ciclos do processador;


    Se fizermos a comparação type(a) == dict resumimos um pouco o processo da seguinte forma:
    * executa o type(a);
    * compara dict (que já é o tipo do dicionário) com o retorno de type(a) - o dict não precisa ser "executado", não é alocado um memória para ele e não é processado pelo "garbage collector".

    Até mais cara!
  3. Avatar de woiski
    Magnun, apenas chamar a atenção que raramente se programa para um tipo específico em Python, justamente por causa do princípio do duck typing - se anda como um pato, etc. Eu costumo ensinar aos alunos que "se Python puder fazer, então o fará, caso contrário atirará uma exceção, que poderá ser devidamente capturada pelo programador". woiski
  4. Avatar de Magnun
    Com certeza woiski! Duck Typing é uma abordagem importante. Mas estou guardando isso para o Curso de Python intermediário . Esse "primeiro curso" é só uma introdução básica. Mas mesmo assim obrigado pelo lembrete. Até mais...
  5. Avatar de dimasters
    Esse processo de checagem com o type() é ideal para não deixar uma entrada inválida com raw_input() e retornar o erro do código do python...
    Então vc checa a variável independente da entrada, se for um typo válido continua do contrário pode reenviar um pedido assim não mostra um aviso ao usuário.
  6. Avatar de fabraga
    Quero logo chegar ao intermediário!!
  7. Avatar de tony130666
    Só não use *, #, $ ... etc. ...
    A não ser se colocá-las entre '*'. Teria como tratar isso no código?

+ Enviar Comentário