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
