Em [[Linguagem de programação Python|Python]], uma **variável** é um nome simbólico que se refere a um valor armazenado na memória. Ela funciona como um contêiner para dados, permitindo que você armazene e manipule informações em seus programas.
> [!NOTE] Boas práticas
> É uma boa prática em [[Linguagem de programação Python|Python]] seguir as convenções da PEP 8 para nomes de variáveis, utilizando `snake_case` (ex: `nome_completo`, `idade_do_usuario`) para melhorar a legibilidade do código. Nomes de variáveis devem ser descritivos e evitar palavras reservadas da linguagem.
# Atribuição de Valores
Para atribuir um valor a uma variável em [[Linguagem de programação Python|Python]], a sintaxe é simples e direta, utilizando o operador de atribuição `=`:
``` python
idade = 28 # Variável 'idade' armazena um número inteiro (int)
altura = 1.75 # Variável 'altura' armazena um número decimal (float)
nome = "Alice" # Variável 'nome' armazena uma sequência de caracteres (str)
esta_ativo = True # Variável 'esta_ativo' armazena um valor booleano (bool)
valor_nulo = None # Variável 'valor_nulo' armazena um valor especial (NoneType)
```
# Tipagem Dinâmica e Inferência de Tipo
Ao contrário de linguagens como [[Linguagem de programação C]], onde você precisa declarar explicitamente o tipo da variável (ex: `int idade = 28;`), em [[Linguagem de programação Python|Python]] o tipo é **inferido automaticamente** com base no valor atribuído. Isso significa que você não precisa especificar se uma variável será um inteiro, uma string, etc.
```python
# Python infere o tipo 'int'
numero = 10
# Mais tarde, a mesma variável pode receber um valor de outro tipo
numero = "dez" # Agora Python infere o tipo 'str'
```
# Anotações de Tipo (Type Hints)
Apesar da tipagem dinâmica, [[Linguagem de programação Python|Python]] permite o uso de [[Anotações de tipo em Python]] (type hints) para indicar os tipos esperados. Isso não afeta a execução do código, mas auxilia na legibilidade, na documentação e na detecção de erros por ferramentas de análise estática (linters e IDEs).
```python
def saudar(nome: str) -> str:
return f"Olá, {nome}!"
quantidade: int = 5
preco: float = 9.99
```
# Tipos de Dados Comuns
[[Linguagem de programação Python|Python]] possui diversos tipos de dados embutidos. Alguns dos mais comuns que as variáveis podem armazenar são:
* **int**: Números inteiros (ex: `10`, `-500`).
* **float**: Números de ponto flutuante (decimais) (ex: `3.14`, `-0.01`).
* **str**: Sequências de caracteres (strings) (ex: `"Olá"`, `'Python'`). Em Python, um único caractere é tratado como uma string de comprimento 1.
* **bool**: Valores booleanos, que podem ser `True` (verdadeiro) ou `False` (falso).
* **NoneType**: Um valor especial (`None`) que indica a ausência de um valor.
Além desses tipos básicos, variáveis em [[Linguagem de programação Python|Python]] podem armazenar estruturas de dados mais complexas, como [[Listas em Python]], [[Tuplas em Python]], [[Conjutnos em Python]] e [[Dictionaries in Python]].
Você pode verificar o tipo de uma variável usando a função `type()`:
```python
x = 10
print(type(x)) # Saída: <class 'int'>
y = "Python"
print(type(y)) # Saída: <class 'str'>
```
# Variáveis como Referências
Em [[Linguagem de programação Python|Python]], as variáveis são referências (ou "[[ponteiros]]") para objetos na memória. Quando você atribui um valor a uma variável, ela passa a apontar para aquele objeto. Se você atribui uma nova valor, ela passa a apontar para um novo objeto (ou um objeto existente, se for o caso).
```python
lista_a = [1, 2, 3]
lista_b = lista_a # lista_b agora referencia o MESMO objeto que lista_a
lista_b.append(4)
print(lista_a) # Saída: [1, 2, 3, 4] - Ambos foram alterados porque apontam para o mesmo objeto.
lista_c = [5, 6, 7]
lista_d = lista_c[:] # Cria uma CÓPIA do objeto, não uma referência ao mesmo objeto.
lista_d.append(8)
print(lista_c) # Saída: [5, 6, 7] - lista_c não foi alterada.
print(lista_d) # Saída: [5, 6, 7, 8]
```
:: **Referência:** :: [Site W3schools sobre variáveis Python](https://www.w3schools.com/python/python_variables.asp)
:: **Referência:** :: [Documentação Python sobre tipos embutidos](https://docs.python.org/3/library/stdtypes.html)
:: **Referência:** :: [PEP 8 -- Style Guide for Python Code](https://peps.python.org/pep-0008/#naming-conventions)
# Ver também
- [[Linguagem de programação Python]]
- [[Anotações de tipo em Python]]
- [[Sequencias em Python]]
- [[Listas em Python]]
- [[Tuplas em Python]]
- [[Conjutnos em Python]]
- [[Dictionaries in Python]]
- [[Variáveis em C]] (para comparação com tipagem estática)