Comportamento de variáveis locais
Olá,
eu estou tendo problemas com o comportamento das variáveis locais numa função, que se comportam como variáveis globais. Eu tenho o seguinte método que é recursivo:
def buscaEmProfundidadeMenorCaminho(self, origem, destino, visitados = [] , caminho = [], valor = 0, todosCaminhos = {} ):
print "VISITADOS!!!! ",
print visitados
.............
então eu chamo o método duas vezes:
self.assertEqual(g.buscaEmProfundidadeMenorCaminho("A", "D"),caminho)
self.assertEqual(g.buscaEmProfundidadeMenorCaminho("A", "F"),None)
na primeira vez ele roda direitinho, e na primeira chamada o visitados aparece vazio, como deveria
mas quando roda a segunda vez, quando eu tenho a origem como A e o destino como F, já na primeira chamada desse método, a lista de visitados vem com os valores da primeira vez (aquela que eu passei os valores como A e D). Ou seja, me parece que a lista de visitados se comporta como se fosse global, a segunda vez que eu chamo o método, ele n cria uma lista vazia, como eu peço (visitados = [] )
Eu não sei se eu me expliquei bem, mas será que alguém sabe como eu posso evitar isso?? Como que eu faço pra ele não preservar o conteúdo das listas quando eu chamo o método e não passo esses parâmetros.
Obrigada desde já
Discussão (1)
Carregando comentários...