Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Funções que Retornam Valores - Parte 2/2

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui



Olá pessoal! Hoje não tem muito blah blah blah, vamos fechar o conceito do "comando" return para podermos ver conceitos mais avançados com as funções em Python.



Funções que Retornam Valores - Parte 2/2



Conformefalamos na última aula, o comando return pode retornar qualquer tipo de dados. Diferente de outras linguagens o Python não restringe o tipo da variável de retorno, como ocorre em linguagens como C/C++, Java e etc. Vamos a um exemplo simples:

Código :
>>> def retorna(tipo):
...     if tipo == 'int':
...         return 1
...     elif tipo == 'long':
...         return 1L
...     elif tipo == 'float':
...         return 1.5
...     elif tipo == 'complex':
...         return 1 + 2j
...     elif tipo == 'list':
...         return [1,2,3]
...     elif tipo == 'tuple':
...         return (1,2,3)
...     elif tipo == 'dict':
...         return {'a':1, 'b':2}
...
>>>
>>> retorna('int')
1
>>> retorna('long')
1L
>>> retorna('float')
1.5
>>> retorna('complex')
(1+2j)
>>> retorna('list')
[1, 2, 3]
>>> retorna('tuple')
(1, 2, 3)
>>> retorna('dict')
{'a': 1, 'b': 2}
>>>
Como mostrado acima, uma única função pode retornar diversos diversos tipos diferentes.

Muitas pessoas se espantam quando vêem códigos em Python que retornam mais de uma variável. Devido à maleabilidade do Python, você pode fazer códigos estranhos como esse:

Código :
>>> def teste():
...     return True, 2
...
>>> flag, numero = teste()
>>> flag
True
>>> numero
2
>>> x = teste()
>>> print x
(True, 2)
>>> type(x)
<type 'tuple'>
>>>
Quando olhamos rapidamente o código acima temos q impressão de que o comando return no Python é capaz de retornar mais de uma variável (nesse exemplo o booleano True e o inteiro 2), mas isso não passa de uma "ilusão" pois quando chamamos a função e passamos o seu valor para uma única variável, vemos que na verdade foi retornado uma tupla com dois valores. Dessa forma, utilizar o "return True, 2" é o mesmo que "return (True, 2)". Pessoalmente prefiro utilizar os parênteses para ficar claro que aquilo é uma tupla, não correndo o risco de gerar uma dupla interpretação sobre o código.

Até a próxima pessoal...

Comentários

  1. Avatar de lord4rk
    Olá Magnun.

    Segundo o Zen of Python:
    Explicit is better than implicit.

    Good Job
    []'s
    Jr.
  2. Avatar de Magnun
    Falou tudo lord4ark!!
  3. Avatar de fabraga
    Não tenho certeza se isso também seria importante realçar, mas nas suas considerações finais falou explicitar que além de a função retornar uma tupla com dois ou mais valores valores também é possível criar variáveis de diferentes tipos (não necessariamente do tipo "tupla") a partir de o retorno de valores múltiplos de uma função, assim como no seu exemplo acima, na linha onde aparece:

    >>> flag, numero = teste()

+ Enviar Comentário