Sobes.tech
Middle

Como funcionam as variáveis em Python?

sobes.tech IA

Resposta da IA

As variáveis em Python não são contêineres de dados, mas sim etiquetas ou nomes que fazem referência a objetos na memória.

Quando atribui um valor a uma variável, não copia esse valor, mas cria uma referência a um objeto existente ou que está sendo criado.

Conceitos básicos:

  • Nomes de variáveis: Podem conter letras (latinas), dígitos e sublinhados. Não podem começar com um dígito. São sensíveis a maiúsculas e minúsculas.
  • Objetos: Tudo em Python é um objeto. Cada objeto tem um tipo, um valor e um identificador (endereço na memória).
  • Referências: A variável armazena uma referência ao identificador do objeto.

Exemplo:

# Cria um objeto int com valor 100 e atribui seu identificador a 'a'
a = 100 
# A variável 'b' agora referencia o mesmo objeto int com valor 100
b = a
# Cria um novo objeto int com valor 200 e atribui seu identificador a 'a'
a = 200 

Neste exemplo, após a = 200, a variável a referencia o novo objeto 200, e a variável b continua referenciando o objeto 100.

  • Tipagem dinâmica: O tipo da variável é determinado pelo tipo do objeto ao qual ela referencia, e pode mudar durante a execução do programa.
# A variável 'x' referencia um objeto int
x = 10 
# Agora a variável 'x' referencia um objeto str
x = "hello" 
  • Coleta de lixo: Quando não há mais referências a um objeto, o Python libera automaticamente a memória ocupada por esse objeto através do mecanismo de coleta de lixo.

  • Objetos imutáveis (immutable) vs. mutáveis (mutable):

    • Imutáveis: Números, strings, tuplas. Ao tentar "alterar" um objeto assim, na verdade é criado um novo objeto.
    • Mutáveis: Listas, dicionários, conjuntos. Seu conteúdo pode ser alterado sem criar um novo objeto.
# Objeto str imutável
s = "world"
# Cria um novo objeto str "hello world", 's' agora referencia a ele
s = "hello " + s

# Objeto list mutável
l = [1, 2, 3]
# Altera o conteúdo do objeto list
l.append(4) 

Assim, as variáveis em Python são ferramentas flexíveis e poderosas para trabalhar com dados, baseadas no conceito de referências a objetos.