Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como o Python lida com arrays?

Porque o Python tem esse comportamento?

def arg(my_list=[]):
    my_list.append(1)
    return my_list

print(arg())
print(arg())
print(arg())

Nó s temos uma função que recebe como parâmetro um array vazio, se chamarmos essa função três vezes print(arg()) print(arg()) print(arg())

Eu achava que o retorno seria

[1]
[1]
[1]

Já que o my_list é iniciado sempre como vazio. Mas o Python retorna

[1]
[1, 1]
[1, 1, 1]

Porque temos esse comportamento?

1 resposta
solução!

Olá,

basicamente isso acontece por questões de otimização do Python, que não cria uma nova lista a cada chamada de função, qdo se utiliza argumento de um tipo mutável.

Se vc alterar o argumento para o tipo str isso não acontece, pq str é imutável.

Mas a solução para esse caso específico, seria informar o valor padrão para None. Caso nhm valor fosse passado, criar a lista dentro do método.

Mais em [1] e [2]

[]'s

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software