Python Levado a Sério
Conselhos de um faixa-preta sobre implantação, escalabilidade, testes e outros assuntos
Descrição do livro
Aperfeiçoe suas habilidades com Python enquanto explora minuciosamente essa linguagem de programação com Python Levado a Sério. Escrito para desenvolvedores e programadores experientes, este livro sintetiza mais de quinze anos de experiência com Python, com o intuito de ensinar você a evitar erros comuns, escrever código de modo mais eficiente e criar melhores programas em menos tempo. Você verá uma série de tópicos avançados como multithreading e memoização, receberá conselhos de especialistas em assuntos como design de APIs e como lidar com bancos de dados, além de conhecer a natureza interna de Python a fim de ter uma compreensão mais profunda sobre a linguagem em si.
Primeiro, aprenderá a iniciar um projeto e se verá diante de assuntos como numeração de versões, estilos de programação e verificações automáticas. Em seguida, aprenderá a definir funções de modo eficiente, escolher as estruturas de dados e as bibliotecas corretas, criar programas à prova de futuro, empacotar seu software para distribuição e otimizar seus programas até o nível de bytecode.
Sumário
- Sobre o autor
- Sobre o revisor técnico
- Agradecimentos
- Introdução
- ■ Iniciando o seu projeto
- Versões de Python
- Organizando o seu projeto
- O que você deve fazer
- O que você não deve fazer
- Numeração de versões
- Estilo de programação e verificações automáticas
- Ferramentas para identificar erros de estilo
- Ferramentas para identificar erros de código
- Joshua Harlow fala sobre Python
- ■ Módulos, bibliotecas e frameworks
- Sistema de importação
- Módulo sys
- Paths de importação
- Importadores personalizados
- Meta path finders
- Bibliotecas-padrões úteis
- Bibliotecas externas
- Lista de verificação de segurança para bibliotecas externas
- Protegendo seu código com um wrapper de API
- Instalação de pacotes: aproveitando melhor o pip
- Usando e escolhendo frameworks
- Documentação e boas práticas para APIs
- Documentando com o Sphinx
- Introdução ao Sphinx e ao reST
- Módulos do Sphinx
- Escrevendo uma extensão para o Sphinx
- Administrando mudanças em suas APIs
- Numeração das versões da API
- Documentando as mudanças em sua API
- Marcando funções obsoletas com o módulo warnings
- Resumo
- Christophe de Vienne fala sobre o desenvolvimento de APIs
- Sistema de importação
- ■ Lidando com timestamps e fusos horários
- Problema da ausência de fusos horários
- Criando objetos datetime default
- Timestamps com informação sobre o fuso horário com o dateutil
- Serializando objetos datetime com informação de fuso horário
- Resolvendo horários ambíguos
- Resumo
- ■ Distribuindo seu software
- Um pouco da história do setup py
- Empacotamento com setup cfg
- Padrão de distribuição do formato Wheel
- Compartilhando seu trabalho com o mundo
- Pontos de entrada
- Visualizando os pontos de entrada
- Usando scripts de console
- Usando plugins e drivers
- Resumo
- Nick Coghlan fala sobre empacotamento
- ■ Testes de unidade
- Básico sobre testes
- Alguns testes simples
- Ignorando testes
- Executando testes específicos
- Executando testes em paralelo
- Criando objetos usados nos testes com fixtures
- Executando cenários de testes
- Testes controlados usando simulação
- Básico sobre testes
- ■ Iniciando o seu projeto
- Sumário
- Identificando um código não testado com o coverage
- Ambientes virtuais
- Configurando um ambiente virtual
- Usando virtualenv com o tox
- Recriando um ambiente
- Usando diferentes versões de Python
- Integrando outros testes
- Política de testes
- Robert Collins fala sobre testes
- ■ Métodos e decoradores
- Decoradores e quando usá-los
- Criando decoradores
- Escrevendo decoradores
- Empilhando decoradores
- Escrevendo decoradores de classe
- Como os métodos funcionam em Python
- Métodos estáticos
- Métodos de classe
- Métodos abstratos
- Combinando métodos estáticos, métodos de classe e métodos abstratos
- Colocando implementações em métodos abstratos
- A verdade sobre o super
- Resumo
- Decoradores e quando usá-los
- ■ Programação funcionaL
- Criando funções puras
- Geradores
- Criando um gerador
- Devolvendo e passando valores com yield
- Inspecionando geradores
- List comprehensions
- Funções funcionais em ação
- Aplicando funções a itens usando map()
- Filtrando listas com filter()
- Obtendo índices com enumerate()
- Ordenando uma lista com sorted()
- Encontrando itens que satisfaçam condições com any() e all()
- Combinado listas com zip()
- Um problema comum resolvido
- Funções úteis de itertools
- Resumo
- Árvore Sintática Abstrata, HY e atributos do tipo LISP
- Observando a AST
- Escrevendo um programa usando a AST
- Objetos AST
- Percorrendo uma AST
- Estendendo o flake8 com verificações na AST
- Escrevendo a classe
- Ignorando códigos irrelevantes
- Verificando se há um decorador apropriado
- Procurando o self
- Uma introdução rápida ao Hy
- Resumo
- Paul Tagliamonte fala sobre a AST e o Hy
- ■ Desempenho e otimizações
- Estruturas de dados
- Entendendo o comportamento usando profiling
- cProfile
- Disassembling com o módulo dis
- Definindo funções de modo eficiente
- Listas ordenadas e o bisect
- namedtuple e slots
- Memoização
- Python mais rápido com o PyPy
- Evitando cópias com o protocolo de buffer
- Resumo
- Victor Stinner fala sobre otimização
- ■ Escalabilidade e arquitetura
- Multithreading em Python e suas limitações
- Multiprocessamento versus multithreading
- Arquitetura orientada a eventos
- Outras opções e o asyncio
- Arquitetura orientada a serviços
- Comunicação entre processos com o ZeroMQ
- Resumo
- ■ Gerenciando bancos de dados relacionais
- RDBMSs, ORMs e quando usá-los
- Backends de bancos de dados
- Streaming de dados com Flask e PostgreSQL
- Sumário
- Escrevendo a aplicação de streaming de dados
- Criando a aplicação
- Dimitri Fontaine fala sobre bancos de dados
- ■ Escreva menos, programe mais
- Usando o six para suporte a Python 2 e 3
- Strings e Unicode
- Lidando com a mudança nos módulos Python
- Módulo modernize
- Usando Python como Lisp para criar um dispatcher simples
- Criando métodos genéricos em Lisp
- Métodos genéricos com Python
- Gerenciadores de contexto
- Menos boilerplate com attr
- Resumo
Sobre o autor
Julien Danjou é engenheiro de software na Red Hat e colaborador do OpenStack, o maior projeto de código aberto existente escrito em Python. É hacker de software livre e de código aberto há quinze anos.… Ver perfil completo ▶
Livros relacionados
Recursos
Opinião dos leitores
Gerlandio L
Aborda assuntos avançados da linguagen, muito simples como o conhecimento é transmitido em um livro relativamente curto.
Édio M
Python é uma linguagem de programação simples, completa, acessível, portátil, extensível. Evoluir na linguagem Python com este livro é uma das formas mais simples, acessíveis e gostosas de começar no mundo do desenvolvimento.
Marcelino d S F
Muito bom livro






