Ir para o conteúdo
ou

Software livre Brasil

Magnun

Nenhum artigo selecionado ainda.
 Voltar a Blog
Tela cheia

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

11 de Agosto de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 210 vezes

Antes de prosseguir leia os artigos anteriores aqui



Olá pessoal! Revendo algumas das nossas últimas aulas sobre funções percebi que havia esquecido de abordar o assunto de funções que retornam valores. Então vamos voltar um pouco nos conceitos mais avançados de funções e vamos ver um conceito mais básico, o "comando" return.



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



Muitas vezes criamos funções para simplificar e modularizar o nosso código. Muitas dessas organizações consistem em funções que realizam algum processamento que pode vir a ser repetido diversas vezes. O "comando" return torna possível que uma função retorne um valor. Esse valor pode ser útil para uma outra parte do programa e pode ser guardado em uma variável. Em Python, não há restrições quanto ao tipo do valor a ser retornado. Vamos a um exemplo básico, uma função que diz se o argumento é uma string ou não. Nesse exemplo, vou utilizar a função type, para quem não lembra como ela funciona vale uma revisão na seguinte aula: [Curso de Python] Comparando os tipos de variáveis

Código:
>>> def eh_str(arg):
...     if type(arg) is str:
...         return True
...     return False
...
>>>
>>> def eh_str2(arg):
...     if type(arg) is str:
...         print 'eh str'
...     print 'nao eh str'
...
>>>
>>> eh_str(12)
False
>>> eh_str('teste')
True
>>> eh_str([1,2])
False
>>>
>>> eh_str2(12)
nao eh str
>>> eh_str2('teste')
eh str
nao eh str
>>> eh_str2([1,2])
nao eh str
>>>
Nesse exemplo, vemos como o return funciona de forma diferente de um "comando" comum. na função eh_str2 utilizamos o print para mostrar o fluxo do programa. Quando o programa entra no if ele imprime 'eh str', depois sai do if e executa o print 'nao eh str'. Já quando utilizamos o return na função eh_str vemos que quando ele entra no if ele nunca sai, pois o comando return quebra toda a execução da função e retorna para o ponto onde a função foi chamada. Vamos ver agora o mesmo exemplo mas com o valor retornado sendo armazenado em uma variável:

Código:
>>> def eh_str(arg):
...     if type(arg) is str:
...         return True
...     return False
...
>>>
>>> def eh_str2(arg):
...     if type(arg) is str:
...         print 'eh str'
...     print 'nao eh str'
...
>>>
>>> ret = eh_str('teste')
>>> print ret,type(ret)
True <type 'bool'>
>>> ret = eh_str2('teste')
eh str
nao eh str
>>> print ret,type(ret)
None <type 'NoneType'>
>>>
Podemos notar que o return "envia" de volta uma variável, nesse caso o booleano True. No caso da função eh_str2, como não retornamos nenhuma variável, por padrão é retornado a variável None, o valor nulo utilizado pelo Python.


Nesse próximo exemplo, vou utilizar o operador in, para quem não lembra como ele funciona basta consultar essa aula: [Curso de Python] Condições com o operador in


Código:
# Este programa verifica se o texto 
# informada possui apenas letras e espaços

# Esta variável possui todos os caracteres válidos
CARACTERES_VALIDOS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVwXYZ '

def valida_texto(texto):
    for letra in texto:
        if letra not in CARACTERES_VALIDOS:
            return False
    return True

while True:
    texto = raw_input('Informe um texto (para sair digite "sair"): ')
    if texto == 'sair':
        break
    retorno = valida_texto(texto)
    if retorno:
        print 'Texto validado'
    else:
        print 'Texto inválido!'
print 'Até a próxima...'
Como podemos ver, no código a função valida texto itera sobre cada letra do texto informado verificando se ela está na variável CARACTERES_VALIDOS. Caso não esteja (if letra not in CARACTERES_VALIDOS) ele retorna o valor falso. O comando return automaticamente sai da função, cancelando toda sua execução, dessa forma ele não itera sobre o restante das letras.

Caso ele não entre no if nenhuma vez durante a iteração temos a certeza que todas as letras são válidas, com isso retornamos o valor True. No loop while recebemos o texto com a função raw_input e verificamos se foi digitado 'sair. Caso positivo, saímos do loop com o comando break. Em seguida chamamos a função valida_texto e armazenamos seu retorno na variável 'retorno'. Dependendo do retorno imprimimos uma mensagem para o usuário e no final emitimos a mensagem de finalização do programa. Vamos ver um exemplo de execução:

Código:
Informe um texto (para sair digite "sair"): este é um teste
Texto inválido!
Informe um texto (para sair digite "sair"): este eh 1 teste
Texto inválido!
Informe um texto (para sair digite "sair"): este eh um teste
Texto validado
Informe um texto (para sair digite "sair"): sair
Até a próxima...
Nos testes vemos que as frases com acentos, números e qualquer outro caractere que não sejam as letras de a-z e A-Z, será mostrada a mensagem "Texto inválido!".

Até a próxima...

Fonte: http://under-linux.org/blogs/magnun/%5Bcurso-de-python%5D-funcoes-que-retornam-valores-parte-1-2-2211/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.