image

Accede a bootcamps ilimitados y a más de 650 cursos para siempre

60
%OFF
Article image
Fernanda Araujo
Fernanda Araujo18/06/2025 03:47
Compartir
WEX - End to End EngineeringRecomendado para tiWEX - End to End Engineering

Paradigmas de Linguagens de Programação em Python: Fundamentos básicos (Part. 03)

  • #Python

Você já se perguntou por que Python se tornou uma das linguagens mais populares e queridas do mundo da programação? A resposta vai muito além da sua sintaxe simples.

Python foi criado no final da década de 1980 por Guido van Rossum, um programador holandês que trabalhava no Centrum Wiskunde & Informatica (CWI), na Holanda. Seu objetivo era desenvolver uma linguagem que fosse tão poderosa quanto as existentes (como C), mas muito mais legível, acessível e intuitiva para humanos. A inspiração para o nome da linguagem não veio de um animal, como muitos pensam, mas sim do grupo britânico de comédia Monty Python — um toque de irreverência que reflete a filosofia da linguagem: tornar a programação mais divertida, elegante e clara.

Lançada oficialmente em 1991, Python nasceu com recursos avançados para a época, como tipagem dinâmica, coleta de lixo automatizada e suporte a múltiplos paradigmas de programação. Em um tempo em que escrever código era muitas vezes uma tarefa árdua e mecânica, Python propunha uma abordagem mais humana e produtiva.

Curiosamente, Python foi durante muitos anos uma linguagem "alternativa", adotada por pesquisadores, professores e entusiastas. No entanto, com o crescimento do open source, da ciência de dados e da inteligência artificial, a linguagem ganhou espaço em empresas de todos os portes — de startups a gigantes como Google, Netflix e NASA.

Outra curiosidade que poucos mencionam: Guido van Rossum foi chamado de "Benevolent Dictator For Life" (BDFL), ou seja, o líder vitalício da linguagem — título que ele manteve por quase 30 anos até se aposentar do cargo em 2018. Ainda assim, seu legado vive no espírito comunitário e na evolução contínua da linguagem, guiada por propostas formais conhecidas como PEPs (Python Enhancement Proposals).

Neste artigo, vamos explorar os fundamentos essenciais da linguagem Python, que vão além da sintaxe: abordaremos como Python lida com variáveis, escopos, objetos, expressões e boas práticas. Entender esses conceitos é mais do que aprender a escrever código — é compreender a filosofia que tornou Python uma das ferramentas mais influentes da computação moderna.

📌 Características da Linguagem

Python é uma linguagem:

  • Multiparadigma (suporta programação imperativa, orientada a objetos e funcional),
  • Interativa,
  • Portável e extensível,
  • Suporta bancos de dados e interfaces gráficas,
  • Pode ser usada para desenvolvimento web, aplicações comerciais e como linguagem de script.

Além disso, sua sintaxe simples e direta incentiva boas práticas e a clareza do código.

🧩 Estrutura e Organização do Código

A estrutura do código em Python é baseada em simplicidade, legibilidade e clareza, princípios que norteiam a filosofia da linguagem desde sua criação. Diferente de outras linguagens como C, Java ou JavaScript, que usam delimitadores explícitos como {} para blocos de código, Python adota a indentação obrigatória como mecanismo estrutural. Isso obriga o programador a escrever código limpo e bem organizado — não é apenas uma questão de estilo, mas parte da sintaxe.

A indentação define claramente os blocos de código, como os usados em condicionais, laços e funções. Além disso, Python segue uma série de boas práticas sugeridas pela PEP 8, o guia oficial de estilo da linguagem, que estabelece convenções para nomes de variáveis, organização de funções, espaços em branco, entre outros.

Regras essenciais de estruturação:

  • Indentação obrigatória: geralmente com 4 espaços por nível.
  • Blocos definidos por : e indentação (sem {}).
  • Comentário com # para uma linha; """ """ para múltiplas.
  • Declaração de variáveis sem necessidade de tipo.
  • Scripts organizados em funções e, preferencialmente, módulos.

Exemplo 1: Estrutura de Condicional

image

Neste exemplo, observe que o if e o else terminam com : e os blocos são definidos pela indentação.

Exemplo 2: Função com retorno e uso de docstring

image

Este é um exemplo simples, mas que demonstra três pontos importantes:

  • Uso de funções para modularizar código.
  • Inclusão de docstrings para documentação automática.
  • Estrutura limpa e direta, típica de Python.

Exemplo 3: Loop for com range()

image

O range() é muito utilizado em Python para gerar sequências numéricas. Esse loop imprime os números de 1 a 5, reforçando o uso prático do for.

Exemplo 4: Uso do input() e organização por funções

image

Este exemplo mostra uma estrutura real e muito comum em scripts Python: entrada de dados, chamada de função e saída.

Exemplo 5: Comentários e boas práticas

image

Comentários ajudam a explicar o "porquê" do código, facilitando a leitura, manutenção e colaboração em equipe.

A maneira como organizamos o código em Python não é apenas uma questão estética: ela influencia diretamente a legibilidade, manutenibilidade e funcionamento correto do programa. Seguir boas práticas como indentação correta, uso de funções bem definidas e comentários explicativos não só melhora a qualidade do seu código, como também facilita sua evolução como programador.

🎯 Variáveis, Objetos e Tipos

Entender como variáveis, objetos e tipos de dados funcionam em Python é fundamental para dominar a linguagem. Embora esses conceitos sejam comuns em várias linguagens de programação, Python trata tudo como objetos, o que confere à linguagem grande flexibilidade e poder.

Variáveis: nomes que apontam para objetos

Em Python, uma variável é uma referência (ou apelido) para um objeto armazenado na memória. Ao contrário de linguagens como C ou Java, você não precisa declarar o tipo de uma variável previamente. Basta atribuir um valor a ela:

python

x = 10       # int
nome = "Ana" # str

Aqui, x não “contém” diretamente o número 10. Em vez disso, x aponta para um objeto do tipo int cujo valor é 10.

Exemplo conceitual:

python

a = 5
b = a
a = 10
print(b)  # Saída: 5

Nesse exemplo, b guarda a referência ao objeto 5 no momento em que é atribuído. Quando a muda para 10, b continua referenciando o 5.

Objetos: tudo em Python é um objeto

Frase comum: “Em Python, tudo é objeto”. Isso quer dizer que valores, tipos, funções, classes, até o próprio código, são representados como objetos, com atributos e métodos embutidos. Isso permite que você trabalhe de maneira uniforme com praticamente qualquer estrutura.

python

x = "Python"
print(x.upper())  # Saída: 'PYTHON'

Nesse exemplo, x é uma variável que aponta para um objeto do tipo str, que possui métodos como .upper() para transformar o texto em maiúsculo.

Tipos de dados internos (built-in types)

Python possui diversos tipos de dados embutidos, agrupados em categorias:

image

Conversão de tipos (casting)

Você pode converter entre tipos explicitamente:

python

# int → float
n = 5
print(float(n))  # Saída: 5.0

# str → int
idade = int("25")

# list → tuple
valores = [1, 2, 3]
tupla = tuple(valores)

Boas práticas com variáveis

  • Nomes significativos: preco_unitario, e não x.
  • Snake_case: padrão em Python (nome_completo, idade_media).
  • Evite palavras reservadas: como list, str, int, input.

Constantes em Python

Python não possui constante real como em outras linguagens. Por convenção, usamos letras maiúsculas para indicar que um valor não deve ser alterado:

python

PI = 3.1415
TAXA_CONVERSAO = 4.91

É responsabilidade do programador manter o valor fixo.

Amarração (Binding)

O conceito de binding é a ligação entre um nome (variável) e um objeto. Python faz binding dinâmico, ou seja, você pode reatribuir tipos diferentes a uma mesma variável ao longo do tempo:

python

valor = 42       # Agora é int
valor = "texto"  # Agora é str

Essa flexibilidade é poderosa, mas exige responsabilidade para evitar bugs silenciosos.

Escopo e Tempo de Vida

Variáveis têm escopo (onde são visíveis) e tempo de vida (quando são criadas e destruídas):

python

def exemplo():
  local = "só dentro da função"
  print(local)

exemplo()
# print(local)  # Erro: local não é acessível fora da função
  • Escopo local: definido dentro de funções.
  • Escopo global: acessível por todo o script.
  • Tempo de vida: variáveis locais morrem quando a função termina.

Dominar os conceitos de variáveis, objetos e tipos em Python vai além da sintaxe: envolve entender como a linguagem gerencia memória, referências e estrutura seus dados internamente. A clareza dessa arquitetura é uma das grandes forças de Python, permitindo ao programador focar no que fazer, em vez de como controlar o sistema em baixo nível.

🔄 Escopo e Tempo de Vida

Imagine que você está organizando uma festa. Para cada cômodo da casa, há um grupo diferente de convidados que podem entrar e sair. Em programação, o escopo é como esse “quarto” onde variáveis podem existir e serem acessadas — e o tempo de vida é o tempo que esses convidados ficam na festa antes de irem embora.

Entender onde e por quanto tempo suas variáveis "vivem" dentro do código é essencial para evitar confusões, bugs e garantir que seu programa funcione como esperado.

O que é escopo?

O escopo determina o alcance ou a visibilidade de uma variável no seu programa — em outras palavras, onde você pode acessar aquela variável.

  • Escopo global: Variáveis definidas fora de qualquer função ou classe, que ficam disponíveis para todo o programa.
  • Escopo local: Variáveis criadas dentro de uma função, que só existem e podem ser usadas dentro daquela função.

Exemplo prático: escopo global e local

image

Aqui, temos duas variáveis mensagem, uma global e outra local, cada uma existindo em seu próprio “quarto”. Quando chamamos falar(), o Python usa a variável local, porque está dentro do escopo da função. Fora da função, a variável global é usada.

Tempo de vida das variáveis

O tempo de vida é o período durante o qual a variável está “viva” na memória, armazenando um valor.

  • Variáveis globais: vivem durante toda a execução do programa. Só “morrem” quando o programa termina.
  • Variáveis locais: “nascem” quando a função é chamada e “morrem” quando a função termina. Depois disso, o espaço de memória que ocupavam é liberado.

Exemplo de tempo de vida:

image

Ao chamar saudacao(), a variável frase é criada, usada e logo após a função terminar, frase desaparece. Se você tentar acessá-la fora da função, o Python avisará que a variável não está definida.

Escopo de bloco: o que Python não tem

Em algumas linguagens, como JavaScript, existe o escopo de bloco — ou seja, variáveis definidas dentro de um if, for ou while só existem dentro daquele bloco delimitado por {}.

Em Python, não existe escopo de bloco, e variáveis criadas dentro desses blocos pertencem ao escopo da função ou global:

image

Variáveis não locais e globais

Às vezes, queremos modificar uma variável global dentro de uma função. Para isso, usamos as palavras-chave global e nonlocal.

  • global permite acessar e modificar variáveis globais dentro de funções.
  • nonlocal permite modificar variáveis em escopos intermediários, como em funções aninhadas.

image

Conhecer bem o escopo e o tempo de vida evita erros difíceis de detectar, como:

  • Variáveis que desaparecem quando você menos espera
  • Conflitos de nomes entre variáveis globais e locais
  • Modificações acidentais de variáveis importantes
  • Escopo é o lugar onde uma variável pode ser acessada.
  • Tempo de vida é o período em que a variável existe na memória.
  • Em Python, escopo é geralmente global ou local a funções — não existe escopo de bloco.
  • Usar bem esses conceitos ajuda a escrever código mais limpo, seguro e fácil de manter.

🧷 Constantes em Python

Se você já programou em outras linguagens como Java, C ou C++, pode estar acostumada a ver palavras-chave como final ou const para declarar constantes — valores que, uma vez atribuídos, não podem mais ser alterados.

Mas ao chegar em Python, você percebe algo curioso: essas palavras-chave simplesmente não existem. E isso não é um descuido da linguagem — é uma escolha de design.

Mas o que é, afinal, uma constante?

Uma constante é como uma regra da casa: "isso aqui não pode ser mudado". Você define um valor uma vez, e espera que ele continue assim durante toda a execução do seu programa.

Por exemplo:

python

PI = 3.14159
TAXA_DE_CONVERSAO = 5.42

Aqui, estamos dizendo para quem lê: “Ei, essa variável não deve ser alterada!” — mas o Python não vai impedir ninguém de fazer isso. Ou seja:

python

PI = 3.14159
PI = 99  # Python permite, mesmo que não seja o correto!

Convenções para criar constantes

Como Python não tem constantes reais, usamos nomes em letras maiúsculas para indicar que uma variável não deve ser alterada:

python

VELOCIDADE_DA_LUZ = 299_792_458  # em metros por segundo
NOME_DO_SISTEMA = "SISTEMA_X"

Esse padrão é reconhecido por toda a comunidade e por ferramentas como linters (ex: Flake8, Pylint). Inclusive, a PEP 8 — o guia oficial de estilo da linguagem — recomenda exatamente isso.

Protegendo valores: técnicas alternativas

Apesar de Python não ter const, há formas de proteger valores críticos, especialmente em programas maiores ou em bibliotecas públicas.

1. Uso de propriedades com @property

Você pode usar classes para criar atributos somente leitura:

python

class Config:
  @property
  def VERSAO(self):
      return "1.0.0"

cfg = Config()
print(cfg.VERSAO)  # Saída: 1.0.0
cfg.VERSAO = "2.0.0"  # Vai gerar erro: can't set attribute

2. Namedtuples (imutáveis)

python

from collections import namedtuple

Constantes = namedtuple('Constantes', ['PI', 'EULER'])
const = Constantes(3.14, 2.71)

print(const.PI)  # Saída: 3.14
# const.PI = 3  # Isso gera erro, pois namedtuples são imutáveis

3. Usar módulos separados para constantes

python

# arquivo: constantes.py
API_KEY = "abc123"
TEMPO_ESPERA = 5

# Em outro arquivo
import constantes
print(constantes.API_KEY)

Se alguém tentar mudar API_KEY, será uma má prática, mas é fácil rastrear.

⚠️ Importante lembrar ⚠️

  • Python não proíbe a mudança de uma constante. Cabe ao programador seguir a convenção.
  • Nomes em maiúsculas sinalizam intenção, mas não oferecem proteção real.
  • Em projetos colaborativos, documentar suas "constantes" ajuda o time a entender o que pode ou não ser alterado.

Mesmo que o Python não force o uso de constantes, pensar como se elas existissem torna seu código mais previsível, organizado e fácil de manter. Ao adotar boas práticas, você cria um ambiente de trabalho mais confiável — e seus colegas (ou seu “eu” do futuro) vão te agradecer.

📊 Tipos de Dados e Expressões

Tipos Numéricos:

  • int → inteiros
  • float → ponto flutuante
  • complex → números complexos
  • bool → booleano (subtipo de int)

Tipos Sequenciais:

  • str, list, tuple, entre outros.

Dicionários:

  • dict → estrutura chave:valor para representar dados associativos.

Operadores Numéricos:

  • Matemáticos: +, -, *, /, **, //, %
  • Booleanos: and, or, not
  • Comparativos: ==, !=, <, <=, >, >=

➕ Precedência de Operadores

A ordem em que os operadores são avaliados influencia diretamente no resultado de uma expressão. Por exemplo:

python

x = 2 + 3 * 4  # Resultado: 14, e não 20

Ordem geral:

  1. [], (), **
  2. +x, -x
  3. *, /, //, %
  4. +, -
  5. <, >, ==, !=
  6. not, and, or

🔁 Conversões de Tipos

Implícitas:

Python converte automaticamente quando possível:

python

x = 5 + 3.0  # Resultado: 8.0 (int + float => float)

Explícitas:

Feita manualmente com funções como:

  • int(), float(), str(), bool()

🎛 Entrada, Saída e Atribuição

Entrada:

python

nome = input("Digite seu nome: ")

Saída:

python

print("Olá,", nome)

Atribuição:

python

x = 10

Pode ser feita de forma encadeada ou múltipla:

python

a, b = 1, 2

🔚 Conclusão

Neste terceiro artigo da série sobre paradigmas de programação em Python, exploramos os fundamentos essenciais da linguagem, como variáveis, escopos, objetos, tipos de dados, comentários e muito mais.

Compreender esses pilares é indispensável para quem deseja dominar Python com profundidade e construir soluções robustas e bem estruturadas. Agora que você tem essa base sólida, estará mais preparado(a) para explorar os paradigmas mais avançados da linguagem nos próximos artigos.

👉 No próximo artigo, vamos explorar dominando programação com Python.

image

Compartir
Recomendado para ti
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander - Cibersegurança #2
Comentarios (0)
Recomendado para tiWEX - End to End Engineering