16 de novembro de 2009

Várias atribuições na mesma linha

Há alguns dias eu enviei uma pergunta para a lista Python Brasil perguntando sobre estilo de inicialização de variáveis e recebi uma ótima dica.

Em Python é possível atribuir conteúdo às variáveis de dois modos:
a = b = ""

ou
a = ""
b = ""

A primeira forma é um atalho, né? Mais prática e sucinta, mas esconde uma pegadinha.
Se eu usar esse atalho com dicionários ou listas, por exemplo, veja o que pode acontecer:
a = b = []
a.append("a")
print a
print b

Estranho, né?
Tente fazer o mesmo com um dicionário e você terá o mesmo resultado.

Agora tente assim:

a = []
b = []
a.append("a")
print a
print b

Pronto. Acho que era isso que a gente queria, certo?

Aproveite e dê uma lida no post Pegadinha: parâmetro default que fala de um assunto parecido.

2 comentários:

  1. # uma alternativa para atribuir varias listas

    a, b, c, d, e = ([] for _ in xrange(5))

    ResponderExcluir
  2. Esse tipo de pegadinha, creio eu, ( não tenho lá muitos conhecimentos em programação com python, afinal tenho apenas 16 anos, kk) é o fato dela fazer atribuição "diretamente" na memoria do objeto. Visto que os dois apontam para o mesmo endereço deve ser normal ambos os objetos armazerem o mesmo valor.

    E a alternativa citada assim é bem legal. xD

    Acho ser essa uma resposta.
    flw brother.

    ResponderExcluir