Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Tipos Built-In - Parte 1

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui



Estou de volta após um curto período de recesso...

Na última aula comentei novamente sobre os tipos builtins e destaquei alguns que já foram abordados nesse curso. A partir de hoje começa uma série de posts explorando cada tipo Built-In relevante.

Tipos Built-In - Parte 1




Quando digo "tipos built-in" estou me referindo a tipos de variáveis como int, string e etc. O Python possui diversos tipos, inclusive possui tipos que não são utilizados comumente durante o desenvolvimento de programas. Abaixo segue uma listagem de todos os tipos buit-in do Python:

  • None;
  • NotImplemented;
  • Ellipsis;
  • Numericos:
    • int;
    • long;
    • float;
    • bool;
    • complex;

  • Sequências Imutáveis:
    • str;
    • unicode;
    • tuple;

  • Sequências Mutáveis:
    • list;
    • bytearray;

  • Sets:
    • set;
    • frozenset;

  • Mapeamentos:
    • dict;

  • slice;
  • callable;
  • file;


Como comentado, muitos desses tipos não são utilizados durante o desenvolvimento de programas, mas podem vir a ser úteis portanto, é bom conhece-los.


None

Começando do topo da lista temos o tipo None. O None é o vazio do Python, geralmente utilizado para inicializar variáveis. O valor booleano do None é false, dessa forma podemos testar se uma variável está vazia ou não:

Código python:
>>> x = None
>>> print x
None
>>> if x == True:
...  print 'none e true'
... else:
...  print 'none e false'
...
none e false
>>>

Para simplificar o if e tornar o código mais legível podemos simplesmente escrever da seguinte forma:
Código python:
 
>>> x = None
>>> if x:
...  print 'none e true'
... else:
...  print 'none e false'
...
none e false
>>>

O None também é retornado quando uma função não retorna nenhum valor explicitamente. Abaixo um exemplo:

Código python:
>>> def teste():
...  print 'funcao teste'
...
>>>
>>> y = teste()
funcao teste
>>> print y
None
>>>


NotImplemented

Em seguida temos o tipo NotImplemented. Esta constante é utilizado para controlar novas implementações. Quando uma nova função/método está sendo implementada mas não está terminada ela retornará o valor NotImplemented. Só por curiosidade, o valor booleano de NotImplemented é True:

Código python:
>>> NotImplemented
NotImplemented
>>> print NotImplemented
NotImplemented
>>> type(NotImplemented)
<type 'NotImplementedType'>
>>> bool(NotImplemented)
True
>>>



Ellipsis...

O Ellipsis também é uma constante, ela representa o simbolo '...' utilizado no slicing de objetos criados pelo programador. Nativamente o Ellipsis só é suportado por objetos da biblioteca NumPy, voltada para cálculos e computação científica. Esse é um dos objetos mais estranhos que eu já vi no Python:

Código python:
>>> Ellipsis
Ellipsis
>>> print Ellipsis
Ellipsis
>>> ...
  File "<stdin>", line 1
    ...
    ^
SyntaxError: invalid syntax
>>>

A Ellipsis só parece funcionar dentro do slicing. Segue um exemplo simples para demonstrar a existência do Ellipsis e possíveis aplicações:

Código python:
>>> class Teste:
...     def __getitem__(self, pedacos):
...             print 'pedaços:',pedacos
... 
>>> 
>>> 
>>> x = Teste()
>>> x[1]
pedaços: 1
>>> x[1:2]
pedaços: slice(1, 2, None)
>>> x[1, ...]
pedaços: (1, Ellipsis)
>>> x[1, ..., 4:7]
pedaços: (1, Ellipsis, slice(4, 7, None))
>>>

Este exemplo aborda vário conhecimentos avançados como orientação a objeto e métodos especiais, mas espero que tenha sido claro o suficiente. Este exemplo é bem abrangente, ele mostra também o tipo slice que será comentado futuramente.

Com o exemplo acima podemos ver que o simbolo '...' foi substituído pelo nome Ellipsis. A Ellipsis pode ter diversas implementações, tudo depende do ponto de vista do programador. Podemos, por exemplo, dizer que [1, ...] irá retornar todos os objetos de uma lista com exceção do objeto de índice 1.

Por hoje é só pessoal...

Comentários

  1. Avatar de fabraga
    Massa!!!

+ Enviar Comentário