Desafio Python
Mesclando configurações com operador pipe
Enunciado
Crie duas funções: config_padrao() que retorna um dicionário com {'tema': 'claro', 'fonte': 'Arial', 'tamanho': 12} e config_usuario() que retorna {'tema': 'escuro', 'tamanho': 14}. Depois, mescle os dois dicionários usando o operador |, dando prioridade às configurações do usuário. Imprima o resultado.
Requisitos
- As funções devem retornar os dicionários exatamente como especificado.
- A mesclagem deve ser feita com o operador
|. - O dicionário final deve ter 'tema' como 'escuro', 'fonte' como 'Arial' e 'tamanho' como 14.
Código inicial
def config_padrao():
# Seu código aqui
pass
def config_usuario():
# Seu código aqui
pass
# Mescle e imprima
Saída esperada
{'tema': 'escuro', 'fonte': 'Arial', 'tamanho': 14}
Ver dica
Use config_padrao() | config_usuario() para mesclar. O dicionário à direita sobrescreve chaves repetidas.
Mostrar solução
def config_padrao():
return {'tema': 'claro', 'fonte': 'Arial', 'tamanho': 12}
def config_usuario():
return {'tema': 'escuro', 'tamanho': 14}
# Mescla com operador pipe: usuário tem prioridade
config_final = config_padrao() | config_usuario()
print(config_final)
Passo a passo
- Definimos
config_padrao()que retorna um dicionário com três pares chave-valor. - Definimos
config_usuario()que retorna um dicionário com duas chaves que também existem no padrão. - Chamamos ambas as funções e aplicamos o operador
|para mesclar. - O operador
|cria um novo dicionário com todos os pares do primeiro e do segundo; em caso de chaves repetidas, o valor do segundo prevalece. - O resultado é armazenado em
config_final. - O
printexibe o dicionário mesclado na ordem de inserção: primeiro as chaves do padrão, depois as novas chaves do usuário (nenhuma nova aqui).
Por que funciona
O operador | é a forma idiomática de mesclar dicionários desde o Python 3.9. Ele não modifica os dicionários originais, o que é seguro. A precedência da direita para a esquerda é útil para configurações onde o usuário sobrescreve padrões.
Erros comuns
- Usar
config_padrao() | config_usuario(sem parênteses): tenta mesclar um dicionário com uma função, gerandoTypeError. - Inverter a ordem:
config_usuario() | config_padrao()faria o padrão sobrescrever o usuário, resultando em 'tema': 'claro' e 'tamanho': 12. - Esquecer de retornar os dicionários nas funções: retornam
Nonee a mesclagem falha.
Outra forma de resolver
Usar {**config_padrao(), **config_usuario()}:
config_final = {**config_padrao(), **config_usuario()}
Funciona em versões anteriores ao 3.9, mas o operador | é mais legível.
Saída esperada
{'tema': 'escuro', 'fonte': 'Arial', 'tamanho': 14}