Funções
Até agora, escrevemos todo o nosso código no app.py, mas à medida que nossos programas crescem, precisamos de uma maneira melhor de organizar nosso código. Precisamos dividir nosso código em pedaços menores, mais gerenciáveis e mais fáceis de manter, que chamamos de funções. A função é um contêiner para algumas linhas de código que executam uma tarefa específica.
Por exemplo, você já aprendeu sobre algumas funções internas em Python print()
e input()
. Cada função tem um propósito e sabe como realizar uma tarefa específica. Assim, quando construímos grandes programas complexos, devemos dividir nosso código em pedaços menores reutilizáveis, ou seja, funções.
Vamos entender esse conceito construindo um programa para imprimir uma mensagem de saudação.
print('Hi there!')
print('Welcome aboard!')
Aqui temos um programa simples com apenas duas linhas de código. Agora, digamos, vamos precisar deles em outros programas para colocá-los em uma função que possamos reutilizar.
Deixe-me apresentar uma palavra-chave reservada def
em Python, que é a abreviação de define e é usado para definir uma função.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Agora este bloco de código irá definir uma função “greet_user
” com as linhas de códigos depois disso. Sempre que essa função for chamada, essas duas linhas serão executadas. Vamos usar isso:
print('start')
greet_user()
print('finish')
O programa é executado sequencialmente, o que significa que você teria que definir uma função antes de chamá-la no programa.
parâmetros
As funções definidas funcionam um pouco diferente das funções internas do Python. Por exemplo, no caso de print()
uma função, ela recebe algumas informações que queremos imprimir, mas nossa função de saudação não recebe nenhuma informação. Não seria melhor se você pudesse passar o nome do usuário aqui e depois, ao invés de dizer “oi”, você pudesse imprimir o nome do usuário?
Você pode fazer isso adicionando os parâmetros dentro dos parênteses da função definida. Deixe-me te mostrar:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Agora o "name
” dentro dos parênteses funcionará como uma variável local e podemos passar o nome do usuário ao chamá-lo.
greet_user('Shahbaz')
Agora o parâmetro name está definido como “Shahbaz
”. Vamos alterar o programa para usá-lo.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Uma coisa importante a notar é que o “nome” na primeira linha é chamado de parâmetro, enquanto o nome fornecido, ou seja, Shahbaz, é chamado de argumento.
Vamos em frente e executar este programa.
Assim, com esses parâmetros, podemos receber informações em nossas funções.
Agora, vamos fazer algo interessante. Digamos que você queira adicionar outro nome à mensagem de saudação. É simples.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Agora observe que quando uma função tem um parâmetro, somos obrigados a passar um valor para esse parâmetro. Se você remover o nome da função e executar o programa, obteremos um erro. Você também pode usar vários parâmetros em uma única função, separados por uma vírgula.
Por exemplo, greet_user(first_name, last_name):
. Os argumentos também serão formatados de forma semelhante.
Argumentos de Palavras-Chave
Até agora, aprendemos que sempre que definimos parâmetros para nossas funções, devemos sempre fornecer valores, caso contrário, obteremos um erro. No último programa, os argumentos 'Shahbaz'
e 'Bhatti'
são chamados de argumentos posicionais, o que significa que sua posição ou ordem importa no programa.
Em Python, temos outro tipo de argumento chamado argumentos de palavras-chave, para os quais a posição não importa. Deixe-me mostrar como eles funcionam.
Veja o último programa. Podemos modificá-lo assim:
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
Agora o first_name
e last_name
são os parâmetros da palavra-chave. Você pode trocar de lugar e o resultado será o mesmo.
Agora, isso não significa que devemos sempre usar argumentos de palavras-chave. Na maioria das vezes usamos argumentos posicionais, mas em certas situações, esses argumentos de palavras-chave nos ajudam a melhorar a legibilidade do nosso código.
Há mais uma coisa que você precisa saber sobre argumentos de palavras-chave. Os argumentos da palavra-chave devem sempre vir após os argumentos posicionais.
Declaração de Devolução
Até agora aprendemos como criar funções e enviar informações usando seus parâmetros. Agora vamos aprender como criar funções que retornam valores. Isso é particularmente útil se você estiver fazendo algum tipo de cálculo e quiser retornar o resultado para quem estiver usando sua função. Deixe-me te mostrar.
Vamos definir uma função que irá calcular o quadrado de um número.
def square(number):
return number*number
Usamos a instrução return para retornar esse número fora da função. Agora, se chamarmos esta função, ela retornará um valor como o input()
função. Vamos imprimir no terminal.
Você pode argumentar que o mesmo resultado pode ser obtido sem usar a instrução return. Vamos verificar.
Vemos duas coisas, o número 9, e nenhuma. O que esta acontecendo aqui?
Quando o interpretador Python executa esse código, primeiro ele chama a função square e o controle passa para a função. Aqui nós calculamos o quadrado deste número dado e então o imprimimos no terminal.
Agora, por padrão, todas as funções retornam o valor none. Portanto, se não tivermos uma instrução de retorno aqui, por padrão, o Python não retornará nenhuma. Nenhum é um objeto que representa a ausência de um valor. É como nada ou nulo em C, C++, Java e Javascript.
Embrulhar!
Espero que você tenha entendido a importância das funções.
Eles são um aspecto significativo do aprendizado de Python se você planeja escrever programas grandes e complexos durante sua carreira de codificação.
Deixe um comentário