Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Passagem de parâmetros

Pelo que pude notar, quando se passa um parâmetro (por exemplo a lista), é passada a referência. Desse modo, tem como eu especificar na declaração da função que ela não altera nada do argumento?

Algo semelhante ao código em C++: C++ void imprimir_valor( const std::string valor ){ std::cout << valor << std::endl; }

2 respostas

Oi Lorhan, tudo bom?

Uma abordagem é você trabalhar com um clone da referência denro do seu método. Assim, você mantém os mesmos valores porém em outra referência, não alterando o estado original da instância.

Um método que faz isso é o deepCopy, segue o link da documentação:

https://docs.python.org/3/library/copy.html#copy.deepcopy

Abraço!

solução!

Só deixando claro que a função deepcopy() é para objetos compostos, ou seja, objetos mutáveis que contêm outros objetos mutáveis. Para uma simples lista de objetos imutáveis, como uma lista de strings/números/tuplas, o ideal é usar o método copy() de lista:

lista = [1,2,3,4,5]
outra_lista = lista.copy()

Em breve vai sair um post bem legal no Blog da Alura explicando melhor isso de objetos mutáveis e imutáveis e como copiar listas! Quando sair eu linko aqui :).