[Curso de Python] Funções que Retornam Valores - Parte 1/2
por
em 11-08-2010 às 11:53 (16046 Visualizações)
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
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' ... >>> >>> 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 >>>
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.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'> >>>
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
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.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...'
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:
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!".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...
Até a próxima...
Comentários
+ Enviar Comentário