Sobes.tech
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 é adicionado 1.
  • Na segunda chamada func(2), é usada a mesma lista, agora [1], e é adicionado 2.
  • 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 é adicionado 4.

Assim, cada print mostrará o estado atual do argumento padrão mutável, que mantém as alterações entre chamadas.