Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Muita gente fica confusa com esse comportamento do Python ao passar listas por parâmetro.
Quando você altera uma lista dentro de uma função, como com append ou extend, a lista original lá fora é alterada. Isso acontece porque a lista é passada por referência, ou seja, a função trabalha com o mesmo objeto na memória.
Por outro lado, se você reatribui o parâmetro a uma nova lista, como items = ["x", "y"], isso só muda a referência local na função. A lista fora da função continua a mesma, porque a reatribuição não afeta o objeto original. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
---
O ponto aqui é entender que Python passa os objetos por referência, mas a reatribuição do parâmetro dentro da função não altera a referência original. Então, se seu objetivo é modificar a lista original, use métodos que alterem o objeto, não reatribua o parâmetro. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Você já passou por essa situação na prática? Como costuma lidar com ela no seu código? Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Carregando comentários...