Funções em Python

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))

Tags: funções parâmetros recursão mapeamento redução

Publicado em 10-1 01:04