image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Murielly Nascimento
Murielly Nascimento01/06/2024 17:42
Compartilhe

Ponteiros em Python

  • #Python

Prefácio

O texto abaixo foi escrito com o auxílio de uma IA (Chat GPT). O tema me ocorreu enquanto fazia as aulas de Python da DIO. Em um dos exercícios o professor demonstrou que duas variáveis inteiras com o mesmo valor ocupavam o mesmo espaço na memória. Fiquei sem entender o motivo. Pesquisando na bibliográfia descobri que Python usava a lógica de ponteiros que tinha visto nas aulas da faculdade. Abaixo segue uma explicação sobre ponteiros e como eles funcionam em Python.

Ponteiros

Ponteiros são um conceito fundamental em muitas linguagens de programação, como C e C++, mas não existem diretamente em Python da mesma maneira. Para explicar o conceito de ponteiros, é útil entender o papel que desempenham na memória e na manipulação de dados.

O que são Ponteiros?

Um ponteiro é uma variável que armazena o endereço de memória de outro valor. Em outras palavras, em vez de armazenar diretamente um valor (como um inteiro ou um caractere), um ponteiro armazena a localização na memória onde esse valor está guardado. Isso permite que os programas manipulem diretamente a memória, o que pode ser muito poderoso, mas também potencialmente perigoso.

Uso de Ponteiros

Ponteiros permitem a realização de operações diretamente na memória, incluindo aritmética de ponteiros, como incrementar ou decrementar um ponteiro para percorrer arrays ou outras estruturas de dados.

Exemplos em C

Aqui estão alguns exemplos simples em C:

int x = 10;
int *p = &x;  // 'p' é um ponteiro para 'x'
printf("%d\n", *p);  // Desreferenciação de 'p', imprimindo o valor de 'x'

Ponteiros em Python

Embora Python não tenha ponteiros explícitos como C ou C++, ele tem referências a objetos. Em Python, todas as variáveis são referências a objetos na memória, o que é conceitualmente semelhante a ponteiros, mas sem a complexidade e os perigos associados à manipulação direta de endereços de memória.

a = [1, 2, 3]
b = a  # 'b' é uma referência ao mesmo objeto que 'a'


b[0] = 100
print(a)  # Isso imprime [100, 2, 3]
        # Modificar b afeta a porque ambos referenciam o mesmo objeto.

Conceito de "is" em Python

Em Python, o operador is verifica se duas variáveis referem-se ao mesmo objeto na memória. Em outras palavras, a is b é True se e somente se a e b são o mesmo objeto.

Interning de Pequenos Inteiros

Python realiza uma otimização chamada "interning" para pequenos inteiros e algumas strings curtas. Isso significa que Python reutiliza objetos para inteiros pequenos, normalmente no intervalo de -5 a 256, de modo que múltiplas variáveis que têm o mesmo valor nesse intervalo apontam para o mesmo objeto na memória.

c = 100
d = 100
print(d is c)  # Isso imprime True


x = 1000
y = 1000
print(x is y)  # Isso imprime False
print(x == y)  # Isso imprime True
Compartilhe
Comentários (1)
Tiago Silva
Tiago Silva - 01/06/2024 20:14

Muito bom o Artigo gostei muito, parabéns Murielly Nascimento