# O tutorial de Python

Python é uma linguagem fácil de aprender e poderosa. Ela tem estruturas de dados de alto nível eficientes e uma abordagem simples mas efetiva de programação orientada a objetos. A elegância de sintaxe e a tipagem dinâmica de Python aliadas com sua natureza interpretativa, o fazem a linguagem ideal para programas e desenvolvimento de aplicações rápidas em diversas áreas e na maioria das plataformas.

O interpretador Python e a extensiva biblioteca padrão estão disponíveis gratuitamente em código ou na forma binária para todas as maiores plataformas no endereço eletrônico do Python, https://www.python.org/, e pode ser livremente distribuído. O mesmo endereço contém distribuições de diversos módulos, programas e ferramentas gratuitos produzidos por terceiros e documentação adicional.

O interpretador Python pode ser facilmente estendido com novas funções e tipos de dados implementados em C ou C++ (ou outras linguagens chamadas a partir de C). Python também é adequada como uma linguagem de extensão para aplicações personalizáveis.

Este tutorial introduz informalmente o leitor aos conceitos básicos e aos recursos da linguagem e do sistema Python. É mais fácil se você possuir um interpretador Python para uma experiência prática, mas os exemplos são autossuficientes e, portanto, o tutorial pode apenas ser lido off-line também.

Para uma descrição detalhada dos módulos e objetos padrões, veja A Biblioteca Padrão do Python. Em A Referência da Linguagem Python você encontra uma definição mais formal da linguagem. Para escrever extensões em C ou C++ leia Estendendo e Incorporando o Interpretador Python e Manual de referência da API Python/C. Existe também uma série de livros que cobrem Python em profundidade.

Este tutorial não espera ser abrangente e cobrir todos os recursos ou mesmo os recursos mais usados. Ele busca introduzir diversos dos recursos mais notáveis do Python e lhe dará uma boa ideia do sabor e estilo da linguagem. Depois de lê-lo, você terá condições de ler e escrever programas e módulos Python e estará pronto para aprender mais sobre os diversos módulos descritos em A Biblioteca Padrão do Python.

O Glossário também vale a pena ser estudado.

- 1. Abrindo seu apetite
- 2. Utilizando o interpretador Python
  - 2.1. Chamando o interpretador
    - 2.1.1. Passagem de argumentos
    - 2.1.2. Modo interativo
  - 2.2. O interpretador e seu ambiente
    - 2.2.1. Edição de código-fonte
- 3. Uma introdução informal ao Python
  - 3.1. Usando Python como uma calculadora
    - 3.1.1. Números
    - 3.1.2. Texto
    - 3.1.3. Listas
  - 3.2. Primeiros passos para a programação
- 4. Mais ferramentas de controle de fluxo
  - 4.1. Comandos `if`
  - 4.2. Comandos `for`
  - 4.3. A função `range()`
  - 4.4. Comandos `break` e `continue`, e cláusula `else`, nos laços de repetição
  - 4.5. Comandos `pass`
  - 4.6. Instruções `match`
  - 4.7. Definindo funções
  - 4.8. Mais sobre definição de funções
    - 4.8.1. Argumentos com valor padrão
    - 4.8.2. Argumentos nomeados
    - 4.8.3. Parâmetros especiais
      - 4.8.3.1. Argumentos posicional-ou-nomeados
      - 4.8.3.2. Parâmetros somente-posicionais
      - 4.8.3.3. Argumentos somente-nomeados
      - 4.8.3.4. Exemplos de funções
      - 4.8.3.5. Recapitulando
    - 4.8.4. Listas de argumentos arbitrárias
    - 4.8.5. Desempacotando listas de argumentos
    - 4.8.6. Expressões lambda
    - 4.8.7. Strings de documentação
    - 4.8.8. Anotações de função
  - 4.9. Intermezzo: estilo de codificação
- 5. Estruturas de dados
  - 5.1. Mais sobre listas
    - 5.1.1. Usando listas como pilhas
    - 5.1.2. Usando listas como filas
    - 5.1.3. Compreensões de lista
    - 5.1.4. Compreensões de lista aninhadas
  - 5.2. A instrução `del`
  - 5.3. Tuplas e Sequências
  - 5.4. Conjuntos
  - 5.5. Dicionários
  - 5.6. Técnicas de iteração
  - 5.7. Mais sobre condições
  - 5.8. Comparando sequências e outros tipos
- 6. Módulos
  - 6.1. Mais sobre módulos
    - 6.1.1. Executando módulos como scripts
    - 6.1.2. O caminho de busca dos módulos
    - 6.1.3. Arquivos Python “compilados”
  - 6.2. Módulos padrões
  - 6.3. A função `dir()`
  - 6.4. Pacotes
    - 6.4.1. Importando * de um pacote
    - 6.4.2. Referências em um mesmo pacote
    - 6.4.3. Pacotes em múltiplos diretórios
- 7. Entrada e Saída
  - 7.1. Refinando a formatação de saída
    - 7.1.1. Strings literais formatadas
    - 7.1.2. O método format()
    - 7.1.3. Formatação manual de string
    - 7.1.4. Formatação de strings à moda antiga
  - 7.2. Leitura e escrita de arquivos
    - 7.2.1. Métodos de objetos arquivo
    - 7.2.2. Gravando dados estruturados com `json`
- 8. Erros e exceções
  - 8.1. Erros de sintaxe
  - 8.2. Exceções
  - 8.3. Tratamento de exceções
  - 8.4. Levantando exceções
  - 8.5. Encadeamento de exceções
  - 8.6. Exceções definidas pelo usuário
  - 8.7. Definindo ações de limpeza
  - 8.8. Ações de limpeza predefinidas
  - 8.9. Criando e tratando várias exceções não relacionadas
  - 8.10. Enriquecendo exceções com notas
- 9. Classes
  - 9.1. Uma palavra sobre nomes e objetos
  - 9.2. Escopos e espaços de nomes do Python
    - 9.2.1. Exemplo de escopos e espaço de nomes
  - 9.3. Uma primeira olhada nas classes
    - 9.3.1. Sintaxe da definição de classe
    - 9.3.2. Objetos de Class
    - 9.3.3. Objetos instância
    - 9.3.4. Objetos método
    - 9.3.5. Variáveis de classe e instância
  - 9.4. Observações aleatórias
  - 9.5. Herança
    - 9.5.1. Herança múltipla
  - 9.6. Variáveis privadas
  - 9.7. Curiosidades e conclusões
  - 9.8. Iteradores
  - 9.9. Geradores
  - 9.10. Expressões geradoras
- 10. Um breve passeio pela biblioteca padrão
  - 10.1. Interface com o sistema operacional
  - 10.2. Caracteres curinga
  - 10.3. Argumentos de linha de comando
  - 10.4. Redirecionamento de erros e encerramento do programa
  - 10.5. Reconhecimento de padrões em strings
  - 10.6. Matemática
  - 10.7. Acesso à internet
  - 10.8. Data e hora
  - 10.9. Compressão de dados
  - 10.10. Medição de desempenho
  - 10.11. Controle de qualidade
  - 10.12. Baterias incluídas
- 11. Um breve passeio pela biblioteca padrão — parte II
  - 11.1. Formatando a saída
  - 11.2. Usando templates
  - 11.3. Trabalhando com formatos binários de dados
  - 11.4. Multi-threading
  - 11.5. Gerando logs
  - 11.6. Referências fracas
  - 11.7. Ferramentas para trabalhar com listas
  - 11.8. Aritmética decimal com ponto flutuante
- 12. Ambientes virtuais e pacotes
  - 12.1. Introdução
  - 12.2. Criando ambientes virtuais
  - 12.3. Gerenciando pacotes com o pip
- 13. E agora?
- 14. Edição de entrada interativa e substituição de histórico
  - 14.1. Tab Completion e Histórico de Edição
  - 14.2. Alternativas ao interpretador interativo
- 15. Aritmética de ponto flutuante: problemas e limitações
  - 15.1. Erro de representação
- 16. Anexo
  - 16.1. Modo interativo
    - 16.1.1. Tratamento de erros
    - 16.1.2. Scripts Python executáveis
    - 16.1.3. Arquivo de inicialização do modo interativo
    - 16.1.4. Módulos de customização