Cheat sheet de Python: sintaxe, comandos e funções embutidas em tabelas
A sintaxe do Python é baseada em recuos em vez de chaves: o bloco depois dos dois-pontos é deslocado em 4 espaços. A base são variáveis sem declaração de tipo, condições if/elif/else, laços for e while, funções def e as funções embutidas print, len, range, input e type, além dos métodos de strings, listas e dicionários.
Esta cheat sheet de Python reúne em uma única página tudo o que é bom ter à mão nos primeiros meses: a sintaxe do Python, laços, funções embutidas, métodos de strings, listas e dicionários e os comandos do terminal. Cada tabela é uma referência curta com exemplos prontos, que podem ser colados diretamente no REPL.
Fundamentos da sintaxe Python
A principal característica da linguagem é que os blocos são definidos por recuos, e não por chaves. Depois de uma linha com dois-pontos (if, for, def, class), as linhas seguintes são deslocadas em 4 espaços. Misturar tabulações e espaços não é permitido — o resultado é IndentationError.
| Construção | Exemplo | Explicação |
|---|---|---|
| Comentário | # texto | tudo depois do # até o fim da linha é ignorado |
| Variável | age = 25 | o tipo não é declarado, ele é determinado pelo valor |
| Atribuição múltipla | a, b = 1, 2 | desempacotamento; troca de valores: a, b = b, a |
| Saída | print("Olá", name) | os argumentos são separados por espaço |
| Entrada | s = input("Nome: ") | sempre devolve uma string |
| f-string | f"{name}: {price:.2f}" | inserção de expressões e formatação |
| Anotação de tipo | count: int = 0 | dica para IDE e verificadores, não é checada na execução |
| Bloco vazio | pass | marcador onde a sintaxe exige um corpo |
| Importação | from math import sqrt | conexão de um módulo ou de um nome dele |
Tipos de dados
| Tipo | Literal | Mutável |
|---|---|---|
int | 42, 1_000_000 | não |
float | 3.14, 1e-3 | não |
bool | True, False | não |
str | "texto", 'texto', """várias linhas""" | não |
list | [1, 2, 3] | sim |
tuple | (1, 2), (1,) | não |
dict | {"a": 1} | sim |
set | {1, 2}, vazio — set() | sim |
NoneType | None | — |
Operadores
| Grupo | Operadores | Exemplo → resultado |
|---|---|---|
| Aritmética | + - * / // % ** | 7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024 |
| Comparação | == != < > <= >= | 1 < x < 10 — encadeamento de comparações |
| Lógica | and or not | x or "padrão" |
| Pertinência | in, not in | "a" in "abc" → True |
| Identidade | is, is not | x is None |
| Atribuição | += -= *= /=, := | if (n := len(s)) > 10: ... |
Condições e correspondência de padrões
if score >= 90:
grade = "A"
elif score >= 70:
grade = "B"
else:
grade = "C"
status = "adulto" if age >= 18 else "criança" # operador ternário
match command:
case "start":
print("Iniciando")
case "stop" | "exit":
print("Parando")
case _:
print("Comando desconhecido")
São considerados falsos False, None, 0, a string vazia e as coleções vazias, por isso em vez de if len(items) > 0 basta escrever if items.
Laços em Python: sintaxe de for e while
Laço for
Sintaxe do laço for em Python: for variável in sequência: seguido do corpo com recuo. O laço percorre qualquer objeto iterável — string, lista, dicionário, arquivo, range.
for i in range(5): # 0 1 2 3 4
print(i)
for i in range(10, 0, -2): # 10 8 6 4 2
print(i)
for i, fruit in enumerate(["maçã", "pera"], start=1):
print(i, fruit)
for name, score in zip(names, scores):
print(name, score)
for key, value in prices.items():
print(key, value)
Laço while
attempts = 3
while attempts > 0:
password = input("Senha: ")
if password == "secret":
print("Acesso concedido")
break
attempts -= 1
else:
print("Tentativas esgotadas") # executa se não houve break
| Comando | O que faz |
|---|---|
break | sai do laço antecipadamente |
continue | passa para a próxima iteração |
else em laço | executa se o laço terminou sem break |
range(stop), range(start, stop, step) | sequência de números, stop não é incluído |
Compreensões de listas (comprehensions)
squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100)) # expressão geradora
Funções
def greet(name: str, greeting: str = "Olá") -> str:
"""Devolve uma saudação."""
return f"{greeting}, {name}!"
def total(*args, **kwargs):
return sum(args), kwargs
square = lambda x: x * x
print(greet("Ana")) # Olá, Ana!
print(greet("Ana", greeting="Oi")) # Oi, Ana!
| Elemento | Significado |
|---|---|
def f(a, b=1) | parâmetro com valor padrão |
*args | qualquer número de argumentos posicionais (tupla) |
**kwargs | qualquer número de argumentos nomeados (dicionário) |
return | devolve um valor; sem ele a função devolve None |
lambda x: ... | função anônima curta, em uma única expressão |
global, nonlocal | alteração de variável de um escopo externo |
Não use valor padrão mutável, como em def f(items=[]): a lista é criada uma única vez e acumula valores entre as chamadas. O certo é items=None e, dentro da função, if items is None: items = [].
Funções embutidas do Python
As funções embutidas do Python estão disponíveis sem importação. São as funções principais, que aparecem em quase todo script.
| Função | O que faz | Exemplo → resultado |
|---|---|---|
print() | exibe valores | print(1, 2, sep="-") → 1-2 |
input() | lê uma string do teclado | int(input()) |
len() | tamanho de uma coleção ou string | len("abc") → 3 |
type() | tipo de um objeto | type(3.0) → <class 'float'> |
isinstance() | verificação de tipo | isinstance(5, int) → True |
int() float() str() bool() | conversão de tipos | int("42") → 42 |
list() tuple() set() dict() | criação de coleções | list("ab") → ['a', 'b'] |
range() | intervalo de números | list(range(3)) → [0, 1, 2] |
enumerate() | pares (índice, elemento) | list(enumerate("ab")) → [(0, 'a'), (1, 'b')] |
zip() | junta sequências em pares | list(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')] |
sum() min() max() | soma, mínimo, máximo | max([3, 7, 1]) → 7 |
abs() round() | valor absoluto e arredondamento | round(3.14159, 2) → 3.14 |
sorted() | nova lista ordenada | sorted(words, key=len, reverse=True) |
reversed() | iterador na ordem inversa | list(reversed([1, 2])) → [2, 1] |
map() filter() | aplicar uma função / filtrar | list(map(str, [1, 2])) → ['1', '2'] |
any() all() | pelo menos um / todos verdadeiros | all(x > 0 for x in nums) |
open() | abre um arquivo | open("a.txt", encoding="utf-8") |
help() dir() | ajuda e lista de atributos | help(str.split), dir(list) |
id() hash() | identificador e hash do objeto | hash("a") |
A melhor referência de Python está sempre à mão: a função help() no REPL. help(dict) mostra todos os métodos do dicionário com descrição, e dir(obj) — a lista de nomes disponíveis.
Métodos de strings
Sintaxe de strings em Python: a string é imutável, e cada método devolve uma nova string. Os fatiamentos funcionam como nas listas: s[1:4], e s[::-1] inverte a string.
| Método | Exemplo → resultado |
|---|---|
upper() lower() | "Py".upper() → 'PY' |
capitalize() title() | "hello world".title() → 'Hello World' |
strip() lstrip() rstrip() | " oi \n".strip() → 'oi' |
split(sep) | "a,b,c".split(",") → ['a', 'b', 'c'] |
join(iterable) | "-".join(["a", "b"]) → 'a-b' |
replace(old, new) | "gato".replace("g", "p") → 'pato' |
find() index() | "hello".find("l") → 2; se não houver — -1 (no index — erro) |
count() | "banana".count("a") → 3 |
startswith() endswith() | "file.py".endswith(".py") → True |
isdigit() isalpha() isspace() | "123".isdigit() → True |
removeprefix() removesuffix() | "test_a".removeprefix("test_") → 'a' |
zfill() center() ljust() | "7".zfill(3) → '007' |
format() | "{} + {}".format(1, 2) → '1 + 2' |
Comandos de listas em Python
A lista é uma coleção mutável e ordenada. A maioria dos métodos altera a lista no lugar e devolve None, por isso a = a.sort() é um erro comum.
| Operação | O que faz | Exemplo |
|---|---|---|
append(x) | adiciona no fim | a.append(4) |
extend(iter) | adiciona todos os elementos | a.extend([5, 6]) |
insert(i, x) | insere pelo índice | a.insert(0, "first") |
remove(x) | remove a primeira ocorrência do valor | a.remove(3) |
pop(i) | remove e devolve o elemento (por padrão o último) | last = a.pop() |
clear() | esvazia a lista | a.clear() |
index(x) | índice da primeira ocorrência | a.index("b") |
count(x) | número de ocorrências | a.count(1) |
sort() | ordena no lugar | a.sort(key=str.lower) |
reverse() | inverte no lugar | a.reverse() |
copy() | cópia rasa | b = a.copy() |
del a[i] | remoção por índice ou fatia | del a[1:3] |
| Fatias | a[start:stop:step] | a[-1] — o último, a[:3] — os três primeiros |
Comandos de dicionários em Python
| Operação | O que faz | Exemplo |
|---|---|---|
d[key] | valor pela chave; se a chave não existe — KeyError | d["name"] |
get(key, default) | valor ou valor reserva | d.get("age", 0) |
d[key] = value | adicionar ou alterar | d["city"] = "Curitiba" |
keys() values() items() | chaves, valores, pares | for k, v in d.items(): |
update() | mescla com outro dicionário | d.update({"a": 1}) |
d1 | d2 | novo dicionário unido | merged = defaults | user |
pop(key, default) | remove e devolve o valor | d.pop("tmp", None) |
popitem() | remove o último par adicionado | d.popitem() |
setdefault(key, value) | devolve o valor; se a chave não existe — cria | d.setdefault("tags", []).append("py") |
key in d | verificação de existência da chave | if "name" in d: |
dict.fromkeys() | dicionário a partir de chaves com um só valor | dict.fromkeys("abc", 0) |
len(d), del d[key] | tamanho e remoção | del d["old"] |
Tuplas e conjuntos
| Operação | Exemplo → resultado |
|---|---|
| Desempacotamento de tupla | x, y = (3, 4) |
| Adicionar ao conjunto | s.add(5), remover — s.discard(5) |
| União / interseção | {1, 2} | {2, 3} → {1, 2, 3}; {1, 2} & {2, 3} → {2} |
| Diferença | {1, 2} - {2} → {1} |
| Remover duplicatas de uma lista | list(dict.fromkeys(items)) — mantendo a ordem |
Exceções e arquivos
try:
number = int(input("Número: "))
except ValueError as err:
print("Não é um número:", err)
else:
print("Sucesso")
finally:
print("Executa sempre")
with open("data.txt", "w", encoding="utf-8") as f:
f.write("linha\n")
with open("data.txt", encoding="utf-8") as f:
for line in f:
print(line.rstrip())
| Exceção | Quando ocorre |
|---|---|
SyntaxError, IndentationError | erro de sintaxe ou de recuo |
NameError | nome não definido (erro de digitação) |
TypeError | operação com tipo inadequado: "1" + 1 |
ValueError | tipo correto, mas valor inválido: int("abc") |
IndexError, KeyError | não existe tal índice ou chave |
FileNotFoundError | arquivo não encontrado |
ZeroDivisionError | divisão por zero |
Classes
from dataclasses import dataclass
class Dog:
def __init__(self, name: str):
self.name = name
def bark(self) -> str:
return f"{self.name}: Au!"
@dataclass
class Point:
x: float
y: float
print(Dog("Rex").bark()) # Rex: Au!
print(Point(1, 2)) # Point(x=1, y=2)
Módulos embutidos do Python
A biblioteca padrão é instalada junto com o interpretador — basta fazer import.
| Módulo | Para quê | Exemplo |
|---|---|---|
math | matemática | math.sqrt(16) → 4.0 |
random | números aleatórios | random.randint(1, 6), random.choice(items) |
datetime | data e hora | datetime.date.today() |
pathlib | caminhos e arquivos | Path("data").glob("*.csv") |
os, sys | sistema, variáveis de ambiente, argumentos | os.environ.get("HOME"), sys.argv |
json | leitura e escrita de JSON | json.loads(text), json.dumps(obj, ensure_ascii=False) |
csv | tabelas CSV | csv.DictReader(f) |
collections | Counter, defaultdict, deque | Counter("banana").most_common(1) → [('a', 3)] |
itertools | combinações e encadeamento de iteradores | itertools.chain(a, b) |
re | expressões regulares | re.findall(r"\d+", s) |
time | pausas e medição de tempo | time.sleep(1), time.perf_counter() |
asyncio | código assíncrono | asyncio.run(main()) |
No Python 3.15 apareceu a importação preguiçosa (PEP 810): lazy import pandas as pd adia o carregamento do módulo até o primeiro uso, e um script com dependências pesadas inicia bem mais rápido.
Comandos do Python no terminal
Um grupo separado de pedidos, "comandos python", são os comandos para executar o interpretador e instalar bibliotecas. No Windows, em vez de python3, costuma-se escrever python ou py.
| Comando | O que faz |
|---|---|
python3 --version | mostra a versão |
python3 | abre o console interativo REPL (para sair — exit()) |
python3 script.py | executa um arquivo |
python3 -c "print(2 + 2)" | executa uma linha |
python3 -m venv .venv | cria um ambiente virtual |
source .venv/bin/activate / .venv\Scripts\activate | ativa o ambiente (Linux, macOS / Windows) |
python3 -m pip install requests | instala um pacote |
pip list, pip freeze > requirements.txt | lista os pacotes e salva a lista |
pip install -r requirements.txt | instala as dependências do arquivo |
python3 -m http.server 8000 | servidor web simples na pasta atual |
uv init, uv add requests, uv run main.py | projeto, dependência e execução pelo gerenciador uv |
Erros comuns de iniciantes
- Comparação com
=— na condição é preciso==; um único=é atribuição. - Dois-pontos esquecidos depois de
if,for,defgeramSyntaxError. - Soma de string com número:
"Idade: " + 25é erro; escrevaf"Idade: {25}". - Alterar a lista durante o percurso — percorra uma cópia
for x in a[:]ou monte uma nova lista. input()devolve uma string — para aritmética, envolva emint()oufloat().
Resumo
A sintaxe do Python se apoia em recuos, dois-pontos e um pequeno conjunto de construções: condições, laços for e while, funções, classes. Some a isso duas dezenas de funções embutidas e os métodos de strings, listas e dicionários — e você cobrirá a maior parte das tarefas do dia a dia. Guarde a cheat sheet e, quando as tabelas ficarem familiares, passe para módulos e programação assíncrona; tudo isso é explicado passo a passo, na prática, no curso "Python 3.15: do iniciante ao profissional".
Perguntas frequentes
Quantos espaços usar para o recuo em Python?
Pelo padrão PEP 8 — 4 espaços por nível. O principal é manter o mesmo recuo em todo o bloco e não misturar com tabulações.
Qual a diferença entre lista e tupla?
A lista é mutável: pode ser ampliada e ordenada no lugar; a tupla é imutável, por isso serve como chave de dicionário e para conjuntos fixos de valores.
Como ver todos os métodos de um objeto direto no Python?
Chame dir(obj) para a lista de nomes e help(obj) para a descrição — por exemplo, help(str) mostra todos os métodos de strings.
Qual a diferença entre sort() e sorted()?
O método list.sort() ordena a própria lista e devolve None, enquanto a função sorted() devolve uma nova lista e funciona com qualquer coleção iterável.
É preciso colocar ponto e vírgula no fim da linha?
Não. O ponto e vírgula é permitido para vários comandos em uma mesma linha, mas em código normal cada instrução é escrita em uma linha nova.
Este tema é abordado em profundidade, com prática, no curso “Python 3.15: от новичка до профи”.
- Python 3.15 с нуля и для опытных: что нового и как учить
- Python 3.15: установка, REPL и первый скрипт за десять минут
- Переменные, числа и строки в Python: f-строки и t-строки
- Условия, циклы и match/case в Python: управляем ходом программы
- Списки, кортежи, словари и множества: frozendict в Python 3.15