Essa é a parte 11 de 24 na série Python + IA: Fundamentos e Projetos Práticos
- Ambiente, Sintaxe Básica e Variáveis em Python — Bootcamp Dia 1
- Como Trabalhar com Listas no Python — Bootcamp Dia 6
- Tuplas e Sets em Python — Estruturas Imutáveis e Conjuntos Inteligentes | Bootcamp Dia 7
- Dicionários em Python: chave e valor, o jeito inteligente de armazenar dados
- Funções em Python: Escreva Menos, Faça Mais
- Tratamento de Erros em Python: programe com segurança
- Leitura e Escrita de Arquivos em Python: salve seus dados no mundo real
- Salvando Dados Estruturados com JSON em Python
- Funções com Múltiplos Retornos em Python: eficiência e organização
- Parâmetros Opcionais e Valores Padrão em Python
- *args e **kwargs em Python: flexibilidade total nas funções
- List Comprehensions em Python: código elegante e eficiente
- Manipulando Arquivos CSV com Python: automatize leitura e escrita de dados
- Começando com Pandas em Python: análise de dados para IA e automações
- Limpeza e Transformação de Dados com Pandas: preparando para IA
- Inteligência Artificial com Python: Fundamentos e Primeira Integração com a OpenAI
- Classificação de Texto com IA: Detectando Temas e Categorias
- Geração de Texto com IA: Criando Respostas Inteligentes com Python
- Chatbot com IA em Python: Construindo um Assistente Inteligente
- Como Detectar Fake News com Python e IA
- Como Criar uma Interface com IA em Python para Detectar Fake News
- Como Avaliar a Qualidade de um Modelo de IA com Python — Além da Acurácia
- Como Balancear Dados e Validar Modelos com Python e IA
- Projeto Final: Criando um Classificador de Fake News com Interface Web em Python (Streamlit)
Sabe quando você quer que uma função aceite qualquer número de argumentos, ou argumentos com nome e valor?
Hoje você vai dominar os dois recursos mais flexíveis para isso:
*args
→ aceita múltiplos valores posicionais**kwargs
→ aceita múltiplos valores nomeados
🎯 O que você vai aprender
- Usar
*args
em funções - Usar
**kwargs
em funções - Combinar argumentos normais,
*args
e**kwargs
- Criar funções altamente adaptáveis
- Aplicar isso em um sistema de registro dinâmico
📦 O que é *args
?
Permite passar vários argumentos sem limite, que são recebidos como tupla:
def somar(*numeros):
return sum(numeros)
print(somar(1, 2, 3)) # 6
print(somar(10, 20)) # 30
🗃️ E **kwargs
?
Recebe argumentos nomeados (com chave e valor), como um dicionário:
def exibir_info(**dados):
for chave, valor in dados.items():
print(f"{chave}: {valor}")
exibir_info(nome="Asllan", idade=41)
🧠 Combinação poderosa:
def exemplo(a, b=0, *args, **kwargs):
print("a =", a)
print("b =", b)
print("args =", args)
print("kwargs =", kwargs)
📌 Desafio do Dia: Cadastro Dinâmico com **kwargs
Crie uma função que:
- Receba qualquer número de campos (nomeados) de um cliente
- Imprima um relatório personalizado com as informações
💻 Código sugerido:
def cadastrar_cliente(**dados):
print("\n📋 Cliente cadastrado:")
for campo, valor in dados.items():
print(f"{campo.capitalize()}: {valor}")
# Exemplo de uso:
cadastrar_cliente(nome="Asllan", idade=41, cidade="Rio de Janeiro", vip=True)
🔁 Extra: usando *args
para somar valores
def calcular_total(*valores):
return sum(valores)
print("Total:", calcular_total(100, 50, 20))
🧠 O que você aplicou hoje?
- Funções altamente reutilizáveis
- Entrada dinâmica com número indefinido de argumentos
- Tratamento de dados flexível com
*args
e**kwargs
- Adaptação de funções para contextos diferentes (como APIs ou IA)
💬 Profissionalmente falando:
Você encontra *args
e **kwargs
em quase todas as bibliotecas modernas — é uma das formas mais limpas de criar funções reutilizáveis e adaptáveis a qualquer cenário.