Tabela de Conteúdo
- 1 Funções
- 1.1 Definindo uma Função
- 1.1.1 Definição Básica
- 1.1.2 Retornando múltiplos Valores
- 1.2 Chamando uma Função
- 1.3 Tipos de Parâmetros
- 1.3.1 Parâmetros Obrigatórios
- 1.3.2 Parâmetros de Palavra-Chave
- 1.3.3 Parâmetros com Valores Padrão
- 1.3.3.1 Uso Básico
- 1.3.3.2 Problemas com Parâmetros Padrão
- 1.3.4 Parâmetros Variáveis
- 1.3.4.1 Parâmetros Posicionais Variáveis
- 1.3.4.2 Parâmetros de Dicionário Variáveis
- 1.3.5 Parâmetros de Posição Obrigatórios
- 1.4 A Estrutura a, b = b, a + b em Python
- 1.5 Funções de Alta Ordem
- 1.5.1 Funções Anônimas
- 1.5.2 Funções Recursivas
- 1.5.3 Funções de Redução e Mapeamento
- 1.5.3.1 Uso do Mapeamento
- 1.5.3.2 Uso da Redução
- 1.5.4 Funções de Filtragem
- 1.5.5 Funções de Ordenação
- 1.5.6 Retornando Funções
- 1.5.6.1 Funções como Resultados
- 1.5.6.2 Fechamentos
- 1.5.6.3 Funções Parciais
1 Funções
Funções em Python são blocos de código organizados e reutilizáveis projetados para executar uma ou mais funções associadas. Elas melhoram a modularidade de um aplicativo e a reutilização de código.
1.1 Definidno uma Função
1.1.1 Definição Básica
Você pode definir funções personalizadas usando a palavra-chave def. Abaixo está a sintaxe básica:
def nome_da_funcao(parametros):
# corpo da função
return valor_de_retorno
Exemplo simples:
def calcular_area(largura, altura):
return largura * altura
def saudacao(nome):
print(f"Bem-vindo, {nome}!")
largura = 4
altura = 5
print("Largura =", largura, "Altura =", altura, "Área =", calcular_area(largura, altura))
saudacao("Teste")
Resultado:
Bem-vindo, Teste!
Largura = 4 Altura = 5 Área = 20
1.1.2 Retornando múltiplos Valores
Funções podem retornar múltiplos valores simultaneamente. Por exemplo:
import math
def mover(x, y, passo, angulo=0):
nx = x + passo * math.cos(angulo)
ny = y - passo * math.sin(angulo)
return nx, ny
x, y = mover(100, 100, 60, math.pi / 6)
print(f"Nova posição: {x}, {y}")
Resultado:
Nova posição: 151.961524227, 70.0
1.2 Chamando uma Função
Para chamar uma função, basta usar o seu nome seguido por parâmetros em ordem:
def imprimir_mensagem():
print("Olá, mundo!")
imprimir_mensagem()
1.3 Tipos de Parâmetros
1.3.1 Parâmetros Obrigatórios
Parâmetros que devem ser fornecidos obrigatoriamente:
def imprimir(palavra):
print(palavra)
imprimir("Exemplo") # Correto
imprimir() # Erro - parâmetro faltando
1.3.2 Parâmetros de Palavra-Chave
Permitem nomear os parâmetros durante a chamada:
def saudar(nome, idade):
print(f"Nome: {nome}")
print(f"Idade: {idade}")
saudar(idade=25, nome="João")
1.3.3 Parâmetros com Valores Padrão
Permitem omitir valores durante a chamada:
def exibir_informacao(nome, idade=30):
print(f"Nome: {nome}")
print(f"Idade: {idade}")
exibir_informacao("Maria")
exibir_informacao("Carlos", 28)
Cuidado com os parâmetros padrão mutáveis:
def adicionar_final(L=None):
if L is None:
L = []
L.append("FIM")
return L
print(adicionar_final())
print(adicionar_final())
1.3.4 Parâmetros Variáveis
1.3.4.1 Parâmetros Posicionais Variáveis
Usando *args para capturar múltiplos argumentos:
def imprimir_varios(*args):
for arg in args:
print(arg)
imprimir_varios("A", "B", "C")
1.3.4.2 Parâmetros de Dicionário Variáveis
Usando **kwargs para capturar múltiplos argumentos de palavra-chave:
def imprimir_informacao(**kwargs):
for chave, valor in kwargs.items():
print(f"{chave}: {valor}")
imprimir_informacao(nome="Ana", idade=35)
1.3.5 Parâmetros de Posição Obrigatórios
Podem ser usados para forçar a passagem de argumentos posicionais:
def minha_funcao(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
minha_funcao(1, 2, 3, e=4, f=5)
1.4 A Estrutura a, b = b, a + b em Python
Esta estrutura é usada para trocar valores de variáveis:
a, b = b, a + b
print(a, b)
1.5 Funções de Alta Ordem
1.5.1 Funções Anônimas
Usando lambda para criar funções sem nome:
x = lambda n: n + 10
print(x(5))
1.5.2 Funções Recursivas
Funções que chamam a si mesmas:
def fatorial(n):
if n == 1:
return 1
return n * fatorial(n - 1)
print(fatorial(5))
1.5.3 Funções de Redução e Mapeamento
1.5.3.1 Uso do Mapeamento
def quadrado(x):
return x ** 2
lista = [1, 2, 3, 4, 5]
print(list(map(quadrado, lista)))
1.5.3.2 Uso da Redução
from functools import reduce
def soma(x, y):
return x + y
lista = [1, 2, 3, 4, 5]
print(reduce(soma, lista))
1.5.4 Funções de Filtragem
def eh_impar(n):
return n % 2 != 0
lista = [1, 2, 3, 4, 5]
print(list(filter(eh_impar, lista)))
1.5.5 Funções de Ordenação
def comparar(x, y):
if x > y:
return -1
elif x < y:
return 1
else:
return 0
from functools import cmp_to_key
lista = [36, 5, 12, 9, 21]
print(sorted(lista, key=cmp_to_key(comparar)))
1.5.6 Retornando Funções
1.5.6.1 Funções como Resultados
def soma():
def soma_interna(a, b):
return a + b
return soma_interna
minha_soma = soma()
print(minha_soma(10, 20))
1.5.6.2 Fechamentos
def criar_fechamento(x):
def fechamento(y):
return x + y
return fechamento
minha_funcao = criar_fechamento(10)
print(minha_funcao(5))
1.5.6.3 Funções Parciais
from functools import partial
def adicionar(x, y):
return x + y
adicionar_5 = partial(adicionar, 5)
print(adicionar_5(3))