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 cai na pegadinha de que reatribuir uma lista dentro de uma função não afeta a lista original, mas na prática ela altera sim se você usar métodos que modificam a lista.
O grande ponto é que, em Python, passar uma lista para uma função é passar uma referência a esse objeto, não uma cópia. Então, se você modificar a lista usando métodos como append ou extend, ela muda lá fora.
Por outro lado, se você fizer uma reatribuição, tipo items = ["x", "y"], você só troca a referência local dentro da função, e a lista original fica intacta. 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 prático:
def add_item(items):
items.append("new") # Modifica a lista original
def replace_item(items):
items = ["x", "y"] # Só troca a referência 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.
data = ["a", "b"]
add_item(data)
print(data) # ['a', 'b', 'new'] Esse contexto ajjuda 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. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
replace_item(data)
print(data) # ['a', 'b', 'new']
No seu entendimento, o que mais causa confusão na hora de entender passagem por referência em Python? Será que é só questão de entender o que é uma referência mesmo? 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.
Carregando comentários...