Funções
Funções são blocos de programas que permitem ao usuário deixar o programa mais legível e expansível.
Abaixo é apresentando um exemplo de programa que faz uso de funções:
Em Python, a função é definida através da palavra reservada def, seguido por:
- O nome da função: o nome da função segue as mesmas regras das variáveis: deve-se utilizar letras, números ou sublinhado, mas o nome não pode começar com um número. Também não puder ser uma palabra reservada do Python.
- Uma lista de parâmetros: a lista de parâmetro fica dentro dos parentêse, separado por vírgula. Algumas funções não tem parâmetros, nesse caso, dentro dos parentêses não é inserido nada.
- Dois pontos ":": que termina a definição da função.
- O bloco de comandos: recuado em relação a linha anterior, vão os comandos contidos na função, podendo retornar valores ou não.
O simples fato de ter criado uma função não significa que ela será executada.
A devida chamada a função irá garantir a execução da função
Chamando uma Função
Para que uma função seja executada, deverão serem feitas chamadas a essa função, para isso, simplemente devemos inserir o nome da função com os parâmetros definidos na sua criação:
Os argumentos são passados para a função e devem ter a correspondência de quantidade respeitada. Quando a função é chamada, os parâmetros são passados para a função que recebe os valores.
Passagem de Parâmetros
Os parâmetros permitem que você passe informações para uma função, permitindo maior flexibilidade e reutilização do código.
Definindo Parâmetros em Funções
No exemplo acima, a função saudacao possui um parâmetro nome. Ao chamar a função e
fornecer um argumento, o valor do argumento é atribuído ao parâmetro e utilizado dentro da função.
Passagem de Parâmetros
Existem dois tipos principais de passagem de parâmetros em funções: passagem por valor e passagem por referência.
Passagem por Valor
Em Python, os argumentos são passados por valor. Isso significa que, quando você chama uma função e passa um argumento, uma cópia do valor desse argumento é passada para a função. Qualquer modificação feita dentro da função não afeta o valor original fora da função.
Neste exemplo, temos uma função chamada incrementar que recebe um
parâmetro numero. Dentro da função, incrementamos o valor do
numero em 1.
No entanto, quando imprimimos o valor antes e depois de chamar a função,
percebemos que o valor original não foi alterado. Isso ocorre porque o argumento foi passado por valor.
Passagem por Referência
Em alguns casos, você pode querer passar um argumento por referência, o que significa que as modificações feitas dentro da função afetam o valor original fora da função. Embora Python não suporte a passagem por referência direta, podemos simular esse comportamento passando objetos mutáveis, como listas ou dicionários.
Neste exemplo, temos uma função chamada adicionar_elemento que
recebe uma lista e um elemento. Dentro da função,
adicionamos o elemento à lista usando o método append().
Quando imprimimos a lista antes e depois de chamar a função,
vemos que o valor original foi modificado. Isso ocorre porque listas são
objetos mutáveis e a função está operando na referência da lista.
É importante ter em mente que a passagem por referência em Python é limitada a objetos mutáveis. Objetos imutáveis, como números inteiros ou strings, são passados por valor, ou seja, uma cópia do valor é passada para a função.
A Chamada if __name__ == '__main__'
A chamada if __name__ == '__main__' é uma
construção comum em Python que permite executar um determinado
bloco de código somente quando o arquivo é executado diretamente,
e não quando é importado como um módulo por outro arquivo.
Isso é útil quando você tem um arquivo Python que contém tanto definições de
funções quanto código que você gostaria de executar como um script independente.
A chamada if __name__ == '__main__' permite que você diferencie entre a
execução direta do arquivo e a importação do mesmo como um módulo.
A estrutura básica da chamada if __name__ == '__main__' é apresetnada a seguir:
No exemplo acima, temos uma função chamada minha_funcao e um bloco de
código que será executado apenas quando o arquivo for executado diretamente.
Esse bloco de código pode conter chamadas de função, instruções de impressão ou
qualquer outra lógica que você queira executar quando o arquivo é executado como um script independente.