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)