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