Senior
O que cada print irá mostrar numa função com um argumento mutável padrão?
sobes.tech IA
Resposta da IA
Em linguagens onde as funções podem ter argumentos padrão mutáveis (alteráveis), como em Python, os valores padrão são inicializados uma única vez na definição da função, não a cada chamada. Isso leva ao fato de que, se o argumento padrão for um objeto mutável (por exemplo, uma lista ou um dicionário), as alterações nesse objeto permanecem entre chamadas.
Exemplo em Python:
def func(a, lst=[]):
lst.append(a)
print(lst)
func(1) # Vai imprimir: [1]
func(2) # Vai imprimir: [1, 2]
func(3, ['x']) # Vai imprimir: ['x', 3]
func(4) # Vai imprimir: [1, 2, 4]
Explicação:
- Na primeira chamada
func(1), é usado a lista padrão[], na qual é adicionado1. - Na segunda chamada
func(2), é usada a mesma lista, agora[1], e é adicionado2. - Na chamada
func(3, ['x']), uma nova lista['x']é passada, portanto as alterações não afetam a padrão. - Na última chamada
func(4), a lista padrão é usada novamente, que agora contém[1, 2], e é adicionado4.
Assim, cada print mostrará o estado atual do argumento padrão mutável, que mantém as alterações entre chamadas.