Uma função pode ter múltiplas declarações return. Ela pode retornar um valor em uma instrução if e outro valor em um else. É importante lembrar que a função para sua execução assim que retorna um valor. Assim que a função alcança uma instrução return, o programa continua sua execução do ponto onde a função foi chamada:
def process_only_even(n):
if n % 2 == 1:
return 'This was an odd number!'
print('Very interesting number ...', n)
n += 18
print('Adding 18 will result in:', n)
return n
print(process_only_even(5))
# This was an odd number!
print(process_only_even(6))
# Very interesting number ... 6
# Adding 18 will result in: 24
# 24
Portanto, a função retorna apenas uma vez, e o programa continua sua execução a partir do ponto onde a função foi chamada.
Isso é especialmente útil se você puder retornar um valor dentro de um loop; assim, tanto o loop quanto a função serão interrompidos naquele ponto, e o programa retornará para onde a função foi chamada. Podemos evitar usar break em loops dessa maneira.
Desafio
Chamaremos um número “especial” se ele for par e a soma de seus dois últimos dígitos for 7.
Implemente uma função is_special(n) que retorne True se n for especial e False caso contrário. Se o número não for “especial”, a função também deve imprimir Not special na saída antes de retornar.
A entrada contém um único inteiro n (100 ≤ n ≤ ).
O programa deve imprimir Yes se n for especial e No caso contrário. No caso de imprimir No, o programa também deve imprimir Not special antes do No.