Aula 11 – Python – Funções
Python – Funções
Que fazer esse curso com certificação?
Acesse:
https://workover.com.br/python-codigo-fluente
Voltar para página principal do blog
Todas as aulas desse curso
Aula 10 Aula 12
Automatize tarefas do dia a dia com python:
Python – Funções
Uma função é um bloco de código que só é executado quando é chamado.
Você pode passar dados, conhecidos como parâmetros, para uma função.
Funções podem retornar dados (objetos) ou não como resultado.
Aceitam Doc Strings.
Doc Strings são strings que estão associadas a uma estrutura do Python ( classe, método ou função) e devem ser colocadas como a primeira linha da definição de qualquer uma dessas estruturas citadas em laranja.
Então, por isso, as Doc Strings são colocadas dentro do corpo da função, geralmente logo no início, como já foi dito no parágrafo anterior.
O objetivo das Doc Strings é servir de documentação para aquela estrutura, seja uma classe, um método ou uma função.
Exemplo:
def fatorial(n):
"""Esta função retorna o fatorial de um número n"""
if n == 0 or n == 1:
return 1
else:
return n * fatorial(n - 1)
Criando uma Função
Em Python, uma função é definida usando a palavra-chave def:
def minha_funcao():
print ("Olá mundo!")
Chamando uma Função
Para chamar uma função, use o nome da função seguido de parênteses:
minha_funcao() #Saída: Olá mundo!
Parâmetros
Informações podem ser passadas para as funções como parâmetro.
Os parâmetros são especificados após o nome da função, dentro dos parênteses.
Você pode adicionar quantos parâmetros quiser, tem apenas separá-los com uma vírgula.
O exemplo a seguir tem uma função que recebe um parâmetro (name).
Quando a função é chamada, passamos um nome, que é usado dentro da função para imprimir Olá e o nome da pessoa:
def saudacao(name):
print ("Olá " + name)
Chamando a minha_funcao() passando o parâmentro name:
saudacao("Toti") #Saída: Olá Toti
Valor do Parâmetro Padrão (Default Parameter Value)
O exemplo a seguir mostra como usar um valor de parâmetro padrão.
Se chamarmos a função sem parâmetro, ela usa o valor padrão, senão, usa o parâmetro passado.
def nacionalidade(pais = "Brasil"):
print("Eu nasci no(a)" + pais)
nacionalidade() #Saída: Eu nasci no(a) Brasil!
nacionalidade("França") #Saída: Eu nasci no(a) França!
nacionalidade("Japão") #Saída: Eu nasci no(a) Japão!
Observações:
1. Os argumentos com padrão devem vir por último, depois dos argumentos sem padrão.
2. O valor do padrão para um parâmetro é calculado quando a função é definida.
Exemplo:
def func(name, pais = "Brasil"):
print(name + " nasceu no(a)" + pais)
3. Os argumentos passados sem identificador são recebidos pela função na forma de uma lista.
4. Os argumentos passados com identificador são recebidos pela função na forma de um dicionário.
5. Os parâmetros passados com identificador na chamada da função devem vir no fim da lista de parâmetros.
Exemplo:
def minhaFuncao(*argumentos, **argumentosIndentificados) :
print(argumentos)
print(argumentosIndentificados)
minhaFuncao('bola', 'carro', nome='Victor')
# Saída:
# ('bola', 'carro') Tupla(lista)
# {'nome': 'Victor'} Dicionário
Na aula 8 do curso construindo uma loja virtual com django, é mostrado o uso desse recurso Default Parameter Value em um projeto real.
Retorno de função (Return Values)
Para permitir que uma função retorne um valor, use a instrução de retorno return:
def multi_cinco(x):
return 5 * x
print(multi_cinco(3))
print(multi_cinco(5))
print(multi_cinco(9))
Funções tem namespace próprio (escopo local), e por isso podem ofuscar definições de escopo global.
def func(str):
str = "String declarada dentro da função"
print(str)
str = "String declarada fora da função com o mesmo nome (str)"
func(str)
#Saída: String declarada dentro da função
def func():
str = "String declarada dentro da função"
print(str)
str = "String declarada fora da função com o mesmo nome (str)"
func()
#Saída: String declarada dentro da função
Recursão
O Python também aceita recursividade na chamada de funções, o que significa que uma função definida pode se chamar.
A recursão é um conceito matemático e de programação comum.
Significa que uma função chama a si mesma.
Cuidado
O desenvolvedor deve ter muito cuidado com a recursão, pois pode cair em uma função que nunca termina, ou uma que use quantidades excessivas de memória ou poder de processamento.
Contudo, quando escrito corretamente, a recursão pode ser uma abordagem muito eficiente e matematicamente elegante para a programação.
Neste exemplo clássico, de dentro da própria função fatorial ocorre uma chamada a ela mesma.
def fatorial(n):
if n == 0 or n == 1:
return 1
else:
return n * fatorial(n - 1)
Pensado no fatorial de 3, 3 não é igual a zero nem a 1, a execução cai no else e multiplica 3 pelo resultado da chamada da fatorial passando 2 dessa vez (3 – 1).
2 não é igual a zero nem a 1, a execução cai no else e multiplica 2 pelo resultado da chamada da fatorial passando 1 dessa vez (2 -1).
Dessa vez cai no if e retorna 1 que vai ser multiplicado com o n(2) da chamada anterior que vai ser multiplicado pelo n(3) da antepenúltima chamada, resultado 3 * 2 * 1 = 6.
As chamadas vão sendo empilhadas até chegar no caso base, que é quando n é igual a um, aí então, as chamadas vão sendo desempilhadas e a multiplicação vai ocorrendo.
As vezes pode levar algum tempo para descobrir exatamente como isso funciona, a melhor maneira de descobrir é testando e modificando códigos.