# Python data types: Os principais tipos de dados em Python

Tipos de dados em Python (*data types*) são fundamentais para a representação, o processamento e a utilização de dados. Ao fazer uso de **diferentes tipos de dados** no seu código, você poderá armazenar informações com mais eficiência, otimizando o desempenho da sua aplicação.

## O que significa Python *data types*?

Em Python, diferentes tipos de dados são usados para **categorizar valores**, determinando como as informações devem ser armazenadas e manipuladas. A linguagem de programação Python aceita inúmeros tipos de dados, alguns deles mais básicos, como integers (números inteiros), floats (números decimais) e strings (cadeias de caracteres). Já os tipos mais complexos incluem listas, tuplas, dicionários e conjuntos. Tipos de dados em Python desempenham um papel essencial na programação, pois possibilitam tanto uma melhor estruturação do código quanto um melhor processamento dos dados.

O objetivo de se diferenciar dados é organizar esses mesmos dados de acordo com certas características, para satisfazer exigências de aplicações. Cada tipo de dado em Python possui **funções e propriedades específicas**: listas, por exemplo, armazenam elementos em uma sequência ordenada, enquanto dicionários usam pares de chave-valor para realizar consultas direcionadas de dados. Ao fazer uso dos *data types* mais adequados, você torna o seu código mais flexível e facilita a manutenção dele.

## Principais Python *data types*

A linguagem de programação Python possui uma grande variedade de tipos de dados já integrados. Estes são alguns dos mais utilizados:

- **Tipos de dados numéricos**: `int`, `float`, `complex`
- *strings*: `str`
- **Tipos de dados sequenciais**: `list`, `tuple`, `range`
- **Tipos de dados binários**: `bytes`, `bytearray`, `memoryview`
- **Dicionários**: `dict`
- **Tipos de dados booleanos**: `bool`
- **Conjuntos**: `set`, `frozenset`

### Tipos de dados numéricos

Vários tipos de dados em Python são adequados para a manipulação de números:

1. Integer (`int`): O tipo integer é usado para representar números inteiros, sem casas decimais.
2. Long (`long`): O tipo long limita o comprimento de números inteiros. A partir do Python 3, os tipos `long` e `int` foram unificados.
3. Float (`float`): O tipo float inclui números com casas decimais.
4. Complex (`complex`): O tipo complex deve conter números complexos, formados por uma parte real e uma parte imaginária, indicada pelo sufixo `j`.

O exemplo de código abaixo explora possibilidades dos tipos de dados numéricos:

```python
# variable with integer value.
a=3
# variable with float value.
b=3.17
# variable with complex value.
c=50+7j
```

### Strings

Uma [string em Python](https://www.ionos.com/digitalguide/websites/web-development/python-string/ "String em Python") (`str`) nada mais é que uma sequência de caracteres. Ela pode ser escrita entre **aspas simples, duplas ou triplas**, como mostra o código a seguir:

```python
# Single quotes
str1 = 'Hello World!'
# Double quotes
str2 = "This is a string."
# Triple quotes for multi-line strings
str3 = '''This is a multi-line string.'''
```

Em Python, strings são **imutáveis**, ou seja, após criadas, strings não podem ser alteradas. No entanto, este tipo de dado suporta métodos e operações que conseguem manipulá-lo, combiná-lo e analisá-lo. Você pode armazenar os resultados dessas ações em variáveis para, assim, obter novas strings.

Observe alguns exemplos de operações com strings:

- Descobrir o comprimento de uma string: `len(str)`
- Fatiar uma string (*slicing*): `str[start:end]`
- Concatenar strings: `str1 + str2`

### Tipos de dados sequenciais

Tipos de dados sequenciais em Python são estruturas de dados capazes de armazenar **coleções ordenadas** de elementos. Eles possibilitam o acesso a elementos de acordo com a posição destes dentro de uma sequência.

Existem diversos tipos de dados sequenciais em Python. **[Listas (`list`)](https://www.ionos.com/digitalguide/websites/web-development/python-list/ "Listas em Python")**, por exemplo, estão entre os **tipos de dados sequenciais mutáveis** que representam uma coleção ordenada de elementos. Diferentemente do que ocorre em strings, é possível alterar, adicionar e remover elementos de uma lista. Listas devem ser criadas entre colchetes e podem conter elementos de diferentes tipos. Veja:

```python
my_list = [1, 2, 3, 'Hello', 'World']
```

**Tupla (`tuple`)**: Tuplas são **tipos de dados sequenciais imutáveis** que, assim como listas, representam uma coleção ordenada de elementos. Contudo, ao contrário de uma lista, uma tupla não pode ser alterada depois de criada. Tuplas devem ser escritas entre parênteses.

```python
my_tuple = (4, 5, 6, 'Python')
```

**Range (`range`)**: Este é um tipo de dado em Python especial, que serve para gerar uma sequência de números. Ele é utilizado, sobretudo, para loops e iterações. O tipo de dado `range` é capaz de criar uma sequência de números inteiros dentro de um intervalo especificado. O **objeto range**, por sua vez, gera a sequência numérica quando solicitado, em vez de armazená-la como lista completa. Essa característica colabora positivamente para a eficiência de um código, principalmente quando ele contém grandes sequências numéricas.

```python
# Range from 0 to 4
my_range = range(4)
for i in my_range:
    print(i)
# Output: 0, 1, 2, 3
```

### Tipos de dados binários

**Bytes (`bytes`)**: O tipo de dado `bytes` é usado para representar uma **sequência imutável de bytes**. Você pode criar bytes utilizando o construtor `bytes()` ou o prefixo `b`, como faz o exemplo abaixo:

```python
my_bytes = b'Hello'
```

**Bytearray (`bytearray`)**: `bytearray` também representa uma sequência de bytes, mas ao contrário do tipo `bytes`, este é um **tipo de dado mutável**. Isso quer dizer que é possível alterar seus valores mesmo depois da declaração.

```python
my_bytearray = bytearray(b'Python')
```

### Dicionários

Em Python, um dicionário (`dict`) é uma estrutura de dados que armazena uma coleção não ordenada de elementos, na forma de **pares de chave-valor**. Diferentemente de listas e tuplas, que apresentam sequências ordenadas de elementos, um dicionário só concede acesso aos seus elementos por meio da inserção de chaves exclusivas. O código abaixo esclarece:

```python
my_dict = {
    "name": "Max",
    "age": 25,
    "city": "California"
}
```

### Tipos de dados booleanos

Tipos de dados booleanos representam **valores verdade**, que podem ser verdadeiros (`True`) ou falsos (`False`). Esses dados têm importância crucial em códigos, sendo usados para análises e decisões lógicas.

```python
a = True
b = False
result_1 = (a and b) # returns False
result_2 = (a or b) # returns True
result_3 = (not a) # returns False
```

### Conjuntos

Um conjunto (`set`) é uma **coleção não ordenada** de valores únicos que não permite duplicatas. Você pode usar conjuntos para armazenar vários elementos que não se repetem, por exmeplo.

```python
my_set = {1, 2, 3, 4, 5}
```

Um `frozenset`, por sua vez, é uma **versão imutável de um conjunto**. Após criá-lo, você não poderá mais adicionar, remover ou alterar seus elementos.

```python
my_set = {1, 2, 3, 4, 5}
frozen_set = frozenset(my_set)
```


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-data-types/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-data-types/) for AI/LLM consumption.