January
5

Torturando Python (Parte 1)

Posted In: Python by Edgar Gabaldi

Achei muito interessante e resolvi compartilhar com vocês.

Tudo no Python são objetos. Se você cria uma variável ela vira um objeto. Quer um exemplo? Vamos criar uma lista:

>>> teste = [1, 2, 3, 4, 5]

Na verdade, nesse momento você criou um objeto do tipo lista e associou a variavel “teste”. Você deve estar pensando que não tem nada demais nisso que eu falei escrevi. Mas vamos entender melhor. “teste” é apenas um rotulo da lista [1, 2, 3, 4, 5] se associarmos a lista “teste” a outra variável, teremos o mesmo objeto associado a dois rótulos. Entendeu? Não? Então vamos demonstrar, você vai entender agora. Veja abaixo:

>>> teste2 = teste

O que temos agora? Duas listas? Não! Temos apenas uma lista com dois rótulos diferentes. Tanto a lista “teste” quanto “teste2″, referem-se ao mesmo objeto.

Ai você me pergunta: Tá bom Edgar, isso quer dizer que se eu quizer mudar a posicão 2 da variável “teste” automaticamente a posição 2 da variável “teste2″ vai estar alterado?

Eu respondo: Sim! Encare “teste” e “teste2″ como rótulos do mesmo objeto. Não tem como errar, para exemplificar isso que estou falando vamos fazer o seguinte teste:

>>> teste2
[1, 2, 3, 4, 5]
>>> teste2[0] = 0
>>> teste2
[0, 2, 3, 4, 5]

Até aqui nenhum mistério, não é? Apenas mudamos a posição 0 da lista “teste2″ pelo valor 0. Se você exibir o conteúdo de “teste” na tela, verá que a posição 0 também vai estar alterada!

>>> teste
[0, 2, 3, 4, 5]

Lindo não ??

Esse conceito se propaga por toda a linguagem (pelo menos até onde eu estudei). Inclusive a funções… por exemplo:

>>> def soma(x,y): return x+y

Temos ai uma classica função que retorna a soma de dois argumentos passado por parâmetros na função. Se associarmos uma variável qualquer a função, ambas vão se referir ao mesmo objeto. Exemplo:

>>> adicao = soma
>>> adicao(10,10)
20

O interessante é que esse comportamento deixa para trás linguagens bem tradicionais como Java e C++. ;-)

Python, vale a pena estudar!

One Comment

[...] já acompanha esse blog a algum tempo sabe que eu já estudei um pouco sobre a [...]

Something to say?

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.