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 ainda se confunde com o comportamento de listas em Python quando passa uma lista como parâmetro para uma função.
O ponto é que, ao modificar uma lista dentro da função, você altera a lista original, pois ambas as variáveis apontam para o mesmo objeto na memória. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Por outro lado, quando você reatribui o parâmetro a uma nova lista, isso só afeta a variável local da função, não a lista que foi passada. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Exemplo clássico:
def add_item(lista):
lista.append("novo") # altera a lista original
def troca_lista(lista):
lista = ["x", "y"] # reatribuição local Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
dados = ["a", "b"]
add_item(dados)
print(dados) # ['a', 'b', 'novo']
troca_lista(dados)
print(dados) # ['a', 'b', 'novo'] Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. 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.
No segundo caso, a lista original não mudou, porque a reatribuição é só na variável local. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. 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. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Quem trabalha com APIs ou manipula muitas listas, precisa entender esse detalhe para evitar bugs sutis. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. 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. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. 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 alguma situação onde esse entendimento fez diferença na sua rotina? O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois.
No meu caso, já passei por uma situação onde reatribuir a lista dentro da função parecia funcionar, mas depois percebi que a lista original não tava mudando. É uma pegadinha que dá trabalho depois pra corrigir.
Exato, e na hora de refatorar código, entender essa diferença evita criar bugs difíceis de rastrear. Aqui no meu time, sempre reforçamos esse conceito pra galera nova.
Acho que isso é mais comum do que parece, principalmente pra quem vem de linguagens que não compartilham referências assim. Sempre que precisar reatribuir, melhor criar uma nova variável fora da função pra evitar confusão.