Skip to content

Funções em Python

    funcoes

    Funções em Python são cruciais para programar. Como cientista de dados ou programador, você criará funções para solucionar problemas de dados.

    O que são Funções?

    As funções na programação são como receitas de bolo: você cria um conjunto de instruções para fazer uma coisa específica e pode usá-lo várias vezes. Às vezes, essas receitas podem precisar de ingredientes extras e podem ou não devolver um bolo pronto no final.

    Existem três tipos de funções em Python:

    1. Funções pré-fabricadas, como help() para ajuda, min() para o valor mínimo, print() para mostrar no terminal, etc. Veja mais dessas funções em uma visão geral aqui.
    2. Funções Definidas pelo Usuário (UDFs), que são funções criadas pelos próprios usuários para ajudá-los.
    3. Funções anônimas, também chamadas de funções lambda, porque não são declaradas com a palavra-chave “def”.

    Parâmetros vs. Argumentos

    Parâmetros são nomes que uma função espera receber, enquanto argumentos são os valores reais passados para esses parâmetros quando a função é chamada.

    Por exemplo:

    def somar(a, b):
        resultado = a + b
        return resultado
    
    # "a" e "b" são parâmetros da função somar
    # Quando chamamos a função, passamos argumentos para esses parâmetros
    resultado_final = somar(3, 5)

    Como Definir uma Função: Funções Definidas pelo Usuário (UDFs)

    Os quatro passos para definir uma função em Python são os seguintes:

    1. Use a palavra-chave “def” para declarar a função e siga com o nome da função.
    2. Adicione parâmetros à função; eles devem estar entre parênteses. Termine a linha com dois pontos.
    3. Adicione as instruções que a função deve executar.
    4. Encerre a função com uma instrução “return” se a função deve retornar algo. Sem a instrução “return”, a função retornará o objeto “None”.

    Por exemplo, aqui está uma função simples chamada “saudacao()”:

    def saudacao():
        nome = str(input("Digite o seu nome: "))
        if nome:
            print("Olá, " + str(nome))
        else:
            print("Olá, Mundo")
        return
    
    saudacao()

    Em sua função personalizada, você pode decidir se deseja ou não usar parâmetros e retornar valores. Lembre-se de que as funções param e saem imediatamente ao encontrar ‘return’, mesmo sem retornar um valor.

    Chamar uma função é como usar uma ferramenta que você criou, seja diretamente ou dentro de outra função. Basta digitar o nome da função, como ‘saudacao()’, para usá-la.

    Além disso, é importante usar docstrings ao criar funções em Python. Elas explicam o que a função faz e como usá-la, o que ajuda qualquer pessoa a entender sua função sem olhar para o código.

    def saudacao2():
        """
        Imprime 'Olá, Mundo'.
    
        Retorna:
            None
        """
        print("Olá, Mundo")
        return

    As docstrings podem ser mais extensas do que este exemplo. Para mais detalhes, você pode examinar as docstrings em bibliotecas Python populares, como scikit-learn ou pandas, no GitHub.

    Argumentos de Função em Python

    Você já viu a diferença entre parâmetros e argumentos. Argumentos são informações dadas a funções, que as referenciam por meio de parâmetros. Existem quatro tipos de argumentos em Python:

    1. Argumentos padrão (Default arguments)
    2. Argumentos obrigatórios (Required arguments)
    3. Argumentos de palavra-chave (Keyword arguments)
    4. Número variável de argumentos (Variable number of arguments)

    Argumentos Padrão

    Argumentos padrão são valores que a função assume se você não especificar outros valores ao chamá-la. Você pode definir esses valores usando o sinal de igual (=), como no exemplo a seguir:

    def multiply(a, b=2):
        return a * b
    
    result = multiply(3)  # Resultado será 6, porque b é 2 por padrão

    Argumentos Obrigatórios

    Os argumentos obrigatórios em uma função devem ser usados corretamente e na ordem certa, como mostrado neste exemplo.

    def add(a, b):
        return a + b
    
    result = add(3, 5)  # Resultado será 8

    Para usar a função sem erros, certifique-se de passar argumentos para ‘a’ e ‘b’ na ordem correta. Se você mudar a ordem deles, o resultado pode variar, especialmente se modificar a função ‘add()’ conforme o exemplo a seguir:

    def add(a, b):
        return a - b
    
    result = add(3, 5)  # Resultado será -2

    Argumentos de Palavra-Chave

    Para garantir a ordem correta dos parâmetros, use argumentos de palavra-chave, que associam argumentos aos nomes dos parâmetros, como neste exemplo:

    def divide(dividend, divisor):
        return dividend / divisor
    
    result = divide(divisor=2, dividend=10)  # Resultado será 5.0

    Observe que ao usar argumentos de palavra-chave, você pode trocar a ordem dos parâmetros e ainda obter o mesmo resultado na chamada da função.

    Número Variável de Argumentos

    Em casos em que você não sabe o número exato de argumentos que deseja passar para uma função, pode usar a seguinte sintaxe com *args:

    def sum_all(*args):
        return sum(args)
    
    result = sum_all(1, 2, 3, 4, 5)  # Resultado será 15

    O asterisco (*) é usado antes de uma variável que guarda valores de argumentos sem nome específico. Pode-se escolher qualquer nome, como *varint, *var_int_args, em vez de *args na função ‘sum_all()’, sem impactar a função.

    Escopo das Variáveis

    Normalmente, as variáveis dentro de uma função só funcionam nela, enquanto as fora funcionam em todo o código. Tentar usar a variável local ‘total’ de ‘calculate_total()’ fora dela causaria um erro ‘NameError’.

    def calculate_total():
        total = 0
        for num in range(1, 6):
            total += num
        print(total)
    
    calculate_total()
    print(total)  # Isso resultará em um erro "NameError: name 'total' is not defined"

    A variável “init”, por outro lado, pode ser impressa sem problemas, porque tem escopo global:

    init = 0
    
    def calculate_total
    
    ():
        total = 0
        for num in range(1, 6):
            total += num
        print(init)
    
    calculate_total()  # Isso imprimirá 0
    print(init)  # Isso imprimirá 0 também

    Funções Anônimas em Python

    Funções anônimas também são chamadas de funções lambda em Python, porque, em vez de declará-las com a palavra-chave “def”, você usa a palavra-chave “lambda”.

    Um exemplo de função lambda seria:

    double = lambda x: x * 2

    Aqui, ‘double’ é uma função pequena. ‘x’ é o que você dá a ela, e ela faz ‘x * 2’. A diferença é que essa função não tem nome, ao contrário das que vimos antes.

    def double(x):
        return x * 2

    Funções sem nome, chamadas de funções anônimas, são úteis para tarefas temporárias e criadas quando necessário, como em funções como “filter()”, “map()” e “reduce()”.

    Métodos versus Funções

    Métodos são funções vinculadas a classes, enquanto funções são independentes. Todos os métodos são funções, mas nem todas as funções são métodos.

    def plus(a, b):
        return a + b
    
    class Summation:
        def sum(self, a, b):
            return a + b

    Para usar o método ‘sum()’ da classe ‘Summation’, crie um objeto da classe. Já a função ‘plus()’ pode ser chamada diretamente.

    Conclusão

    Espero que este tutorial de funções em Python tenha sido útil! Se você quiser revisar outros conceitos básicos de programação Python, não deixe de conferir o post: Seleção de Estrutura de Dados: Um Estudo de Caso, onde você consolidará e praticará seu conhecimento sobre listas, dicionários, tuplas, conjuntos e datas.

    Outras Referências

    Exercícios

    1. Escreva uma função que desenhe uma grade como a seguinte:

    Dica: Para exibir múltiplos valores em uma linha em Python, use uma sequência separada por vírgulas, por exemplo, print(‘+’, ‘-‘).

    Para evitar que a próxima linha seja iniciada automaticamente, insira um espaço no final, como: print(‘+’, end=”) print(‘-‘). Isso resultará em + -.

    2. Escreva uma função que desenhe uma grade semelhante com quatro linhas e quatro
    colunas.

    3. Por que é vantajoso ter funções em seus programas?

    4. Que instrução cria uma função?

    5. Se uma função não tiver uma instrução de retorno, qual será o valor de retorno de uma chamada a essa função?

    Exercícios Desafio

    1.Mostre que em Python podemos colocar uma função como argumento de outra função -> Neste caso dizemos que funções em Python são objetos de primeira classe;

    2.Escreva a função do_twice, que recebe como argumento uma função e a repete duas vezes;

    3.Modifique a função anterior para receber dois argumentos: uma função e a quantidade de vezes que queremos repetir aquela função;

    Tags:

    Leave a Reply

    Your email address will not be published. Required fields are marked *