Fundamentos de Python: estruturas de dados
"""Retorna a raiz quadrada de n.""" result = n ** 2 return result 20
Observe o uso da string com aspas triplas abaixo do cabeçalho da função. Isso é uma docstring. Essa string se comporta como um comentário dentro da função, mas também será exibida quando o usuário inserir help(square) em um prompt de shell do Python. Cada função que você define deve incluir uma docstring que declara o que a função faz e fornece informações sobre quaisquer argumentos ou valores retornados. As funções podem introduzir novas variáveis, também chamadas variáveis temporárias. Na função square, n é um parâmetro e result é uma variável temporária. Os parâmetros e variáveis temporárias de uma função existem apenas durante o tempo de vida de uma chamada de função e não são visíveis para outras funções ou para o programa circundante. Assim, várias funções diferentes podem usar os mesmos parâmetros e nomes de variáveis sem conflitos. Quando uma função não inclui uma instrução return, ele retorna automaticamente o valor None após a execução de sua última instrução. Você pode definir funções em qualquer ordem em um módulo, desde que nenhuma função seja realmente executada antes de sua definição ser compilada. O próximo exemplo mostra uma chamada de função ilegal no início de um módulo: first()
# Gera um NameError (função ainda indefinida)
def first(): print("Calling first.") second() # Gera um NameError Não é um erro, porque realmente não é # chamada até depois de second ser definida def second(): print("Calling second.") first()
# Aqui é onde a chamada da primeira deve entrar
Quando o Python executa a primeira linha de código, a função first ainda não foi definida, então uma exceção é levantada. Se você colocasse um símbolo de comentário # no início dessa linha e executasse o código novamente, o programa seria executado para um término normal. Neste caso, embora a função second pareça ter sido chamada antes de ser definida, ela não é realmente chamada até a função first ser chamada, momento em que ambas as funções foram definidas. Você pode especificar parâmetros como opcionais, com valores padrão, usando a notação <nome de parâmetro> = <valor padrão>. Os parâmetros necessários (aqueles sem valores padrão) devem preceder os parâmetros opcionais na lista de parâmetros.
Funções recursivas Uma função recursiva é uma função que chama a si mesma. Para evitar que uma função se repita indefinidamente, ela deve conter pelo menos uma instrução de seleção. Essa instrução
Fundamentos de Python_estruturas de dados_miolo.indb 20
22/02/2022 10:37:01