# O Tutorial 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 a tipografia dinâmica do 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 sua extensa biblioteca padrão estão disponíveis na forma de código fonte ou binário para a maioria das plataformas a partir do site, http://www.python.org/, e podem ser distribuídos livremente. No mesmo sítio estão disponíveis distribuições e referências para diversos módulos, programas, ferramentas e documentação adicional, contribuídos por terceiros.

O interpretador Python pode ser facilmente extendido com novas funções e tipos de dados implementados em C ou C++ (ou outras linguagens chamados a partir de C). Python também é adequado 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 Python e do sistema. É mais fácil se você possuir um interpretador Python para uma experiência prática, mas os exemplos são auto suficientes 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 Intérprete de Python e Manual de referência da API Python/C. Existe 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 o 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. Strings
    - 3.1.3. Listas
  - 3.2. Primeiros passos para a programação
- 4. Mais ferramentas de controle de fluxo
  - 4.1. Comando `if`
  - 4.2. Comando `for`
  - 4.3. A função `range()`
  - 4.4. Comandos `break` e `continue`, e cláusulas `else` em laços
  - 4.5. Comando `pass`
  - 4.6. Definindo Funções
  - 4.7. Mais sobre definição de funções
    - 4.7.1. Argumentos com valores padronizados
    - 4.7.2. Argumentos nomeados
    - 4.7.3. Listas de argumentos arbitrários
    - 4.7.4. Desempacotando listas de argumentos
    - 4.7.5. Expressões lambda
    - 4.7.6. Strings de documentação
    - 4.7.7. Anotações de Função
  - 4.8. Intermezzo: estilo de codificação
- 5. Estrutura 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. O comando `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ão
  - 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. Formatação de strings à moda antiga
  - 7.2. Leitura e escrita de arquivos
    - 7.2.1. Métodos de arquivos
    - 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. Exceções definidas pelo usuário
  - 8.6. Definindo ações de limpeza
  - 8.7. Ações de limpeza predefinidas
- 9. Classes
  - 9.1. Uma palavra sobre nomes e objetos
  - 9.2. Escopos e Namespaces
    - 9.2.1. Exemplo de Escopos e Namespaces
  - 9.3. Primeiro contato com classes
    - 9.3.1. Sintaxe da Definição de Classe
    - 9.3.2. Objetos de Classe
    - 9.3.3. Objetos de Instância
    - 9.3.4. Objetos Métodos
    - 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