As funções integradas como abs(), pow() e max(), produziram resultados. Chamar cada uma dessas funções gera um valor, que normalmente atribuímos a uma variável ou usamos como parte de uma expressão.
o_maior = max(3, 7, 2, 5)
x = abs(3 - 11) + 10
Neste capítulo, vamos escrever funções que retornam valores. O primeiro exemplo é área, que retorna a área de um círculo com o raio fornecido:
def area(raio):
temp = 3.14159 * raio**2
return temp
Já vimos a instrução de retorno antes, mas em uma função frutífera, a instrução de retorno inclui um valor de retorno. Esta instrução significa: Retorne imediatamente desta função e use a seguinte expressão como um valor de retorno. A expressão fornecida pode ser arbitrariamente complicada, então poderíamos ter escrito esta função de forma mais concisa:
def area(raio):
return 3.14159 * raio**2
Por outro lado, variáveis temporárias como temp geralmente tornam a depuração mais fácil. Às vezes, é útil ter várias instruções de retorno, uma em cada ramificação de uma condicional. Já vimos o abdômen integrado, agora vemos como escrever o nosso próprio:
def valor_absoluto(x):
if x < 0:
return -x
else:
return x
Como essas instruções de retorno estão em uma condição alternativa, apenas uma será executada. Assim que um é executado, a função termina sem executar nenhuma instrução subsequente. Outra maneira de escrever a função acima é omitir o else e apenas seguir a condição if pela segunda instrução de retorno.
def valor_absoluto(x):
if x < 0:
return -x
return x
Pense nesta versão e se convença de que ela funciona igual à primeira. O código que aparece após uma instrução de retorno, ou qualquer outro lugar que o fluxo de execução nunca pode alcançar, é chamado de código morto.
Em uma função frutífera, é uma boa ideia garantir que todos os caminhos possíveis através do programa cheguem a uma instrução de retorno. A seguinte versão de valor_absoluto não consegue fazer isso:
def valor_absoluto(x):
if x < 0:
return -x
elif x > 0:
return x
Esta versão não está correta porque se x for 0, nenhuma das condições é verdadeira e a função termina sem atingir uma instrução de retorno. Nesse caso, o valor de retorno é um valor especial chamado None:
def valor_absoluto(x):
if x < 0:
return -x
elif x > 0:
return x
print(valor_absoluto(0)) # None
None é o valor único de um tipo chamado NoneType.
Todas as funções Python retornam None sempre que não retornam outro valor.
0 Comentários