associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Revisão 2e 2009-04-19 23:33:03

Excluir mensagem

CarpintariaPython

(Esse texto é uma tradução de Intermediate and Advanced Software Carpentry in Python, de C Titus Brown. O original, segundo o autor, estão licenciados sob a Creative Commons, então a tradução também está.)

Carpintaria de Software Intermediária e Avançada em Python

Bem-vindo! Você acabou de cair nas apostilas de um curso que eu apresentei no Lawrence Livermore National Lab, entre 12 e 14 de junho de 2007.

Essas notas foram planejadas para acompanhar minha palestra, que era uma demostração de de várias características e pacotes "intermediários" de Python. Como a demonstração era interativa, essas notas não são notas completas do que foi apresentado no curso. (Perdoe-me por isso; eles atualizaram minhas apostilas para serem mais completas...)

Entretanto, todas as 70 páginas são livres para ver e imprimir; então, aproveite.

Todos os erros são, naturalmente, meus. Note que quase todos os exemplos começando com >>> são doctests, então você pode pegar o fonte e rodar doctest sobre ela para garantir que eu fui honesto. Só faça-me um favor e rode os doctests com Python 2.5 ;)

Note que o primeiro dia do curso foi até o final de "Testando seu software"; o segundo dia foi até o final de "Recursos online sobre Python"; e o terceiro dia terminou o curso.

Códigos de exemplo (a maior parte das seções sobre sobre extensões em C) estão disponíveis aqui; veja o README para mais informações.

Conteúdo

  1. Carpintaria de Software Intermediária e Avançada em Python
  2. Python Idiomático
    1. Alguns tipos de dados básicos
    2. List comprehentions
    3. Criando seus próprios tipos
    4. Iterators
    5. Generators
    6. assert
    7. Conclusões
  3. Estruturando, Testando e Mantendo Programas Python
    1. Programando para reusabilidade
    2. Módulos e scripts
    3. Pacotes
    4. Uma pequena digressão: nomes e formatação
    5. Outra pequena digressão: doctstrings
    6. Compartilhando dados entre código
    7. Escopo: uma digressão
    8. De volta ao compartilhamento de dados
    9. Como módulos são carregados (e quando código é executado)
    10. PYTHONPATH, e encontrando pacotes e módulos duranto o desenvolvimento
    11. setup.py e distutils: a maneira à antiga de instalar pacotes Python
    12. setup.py, eggs e easy_install: a nova maneira da moda de instalar pacotes Python
  4. Testando seu software
    1. Uma introdução a conceitos sobre teste
    2. O módulo doctest
    3. Tests unitários com unittest
    4. Testes com nose
    5. Análise de cobertura de código
    6. Adicionando testes para um projeto existente
    7. Pensamentos finais sobre testes automatizados
  5. Uma Introdução Estendida ao Framework de Teste Unitiário nose
    1. O que são testes unitários?
    2. Por que usar um framework? (e por que nose?)
    3. Alguns poucos exemplos simples
      1. Suporte a testes
      2. Exemplos são incluídos!
    4. Um guia um tanto mais completo para descoberta de testes e execução
      1. Rodando testes
      2. Depurando descoberta de testes
    5. A linha de comando do nose
      1. -w: Especificando o diretório corrente
      2. -s: Não capturar stdout
      3. -v: Saída de informação e debug
      4. Especificando uma lista de testes para rodar
    6. O plugin 'attrib' -- rodando seletivamente subconjuntos de testes
    7. Rodando nose programaticamente
    8. Escrevendo plugins -- um guia simples
    9. Ressavlas ao nose -- avise o comprador, ocasionamente
  6. Python Idiomático revisitado
    1. sets
    2. any e all
    3. Exceções e hierarquia de exceções
    4. Decorators de funções
    5. try/finally
    6. Argumentos de funções e wrapping functions
  7. Mensurando e Aumentando Performance
    1. Que profiler devo usar?
    2. Mensurando snippets de código com timeit
  8. Acelerando Python
    1. psyco
      1. Instalando psyco
      2. Usando psyco
    2. pyrex
  9. Ferramentas para Ajudar Você a Trabalhar
    1. IPython
    2. screen e VNC
    3. Trac
  10. Recursos Online sobre Python
  11. Embrulhando(?) C/C++ para Python
    1. Wrapping manual
    2. Embrulhando código Python com SWIG
    3. Embrulhando código C com pyrex
    4. ctypes
    5. SIP
    6. Recomendações
    7. Uma ou duas outras notas sobre wrapping
  12. Pacotes para Multiprocessamento
    1. threading
    2. parallelpython
    3. Rpyc
    4. pyMPI
    5. multitask
  13. Pacotes úteis
    1. subprocess
    2. rpy
    3. matplotlib
  14. Python Idiomático 3: new-style classes
    1. Atributos gerenciados
    2. Descriptors
  15. GUI Gossip
  16. Python 3.0

Python Idiomático

Alguns tipos de dados básicos

List comprehentions

Criando seus próprios tipos

Iterators

Generators

assert

Conclusões

Estruturando, Testando e Mantendo Programas Python

Programando para reusabilidade

Módulos e scripts

Pacotes

Uma pequena digressão: nomes e formatação

Outra pequena digressão: doctstrings

Compartilhando dados entre código

Escopo: uma digressão

De volta ao compartilhamento de dados

Como módulos são carregados (e quando código é executado)

PYTHONPATH, e encontrando pacotes e módulos duranto o desenvolvimento

setup.py e distutils: a maneira à antiga de instalar pacotes Python

setup.py, eggs e easy_install: a nova maneira da moda de instalar pacotes Python

Testando seu software

Uma introdução a conceitos sobre teste

O módulo doctest

Tests unitários com unittest

Testes com nose

Análise de cobertura de código

Adicionando testes para um projeto existente

Pensamentos finais sobre testes automatizados

Uma Introdução Estendida ao Framework de Teste Unitiário nose

O que são testes unitários?

Por que usar um framework? (e por que nose?)

Alguns poucos exemplos simples

Suporte a testes

Exemplos são incluídos!

Um guia um tanto mais completo para descoberta de testes e execução

Rodando testes

Depurando descoberta de testes

A linha de comando do nose

-w: Especificando o diretório corrente

-s: Não capturar stdout

-v: Saída de informação e debug

Especificando uma lista de testes para rodar

== Rodando doctests no nose ===

O plugin 'attrib' -- rodando seletivamente subconjuntos de testes

Rodando nose programaticamente

Escrevendo plugins -- um guia simples

Ressavlas ao nose -- avise o comprador, ocasionamente

== Créditos==

Python Idiomático revisitado

sets

any e all

Exceções e hierarquia de exceções

Decorators de funções

try/finally

Argumentos de funções e wrapping functions

Mensurando e Aumentando Performance

Que profiler devo usar?

Mensurando snippets de código com timeit

Acelerando Python

psyco

Instalando psyco

Usando psyco

pyrex

Ferramentas para Ajudar Você a Trabalhar

IPython

screen e VNC

Trac

Recursos Online sobre Python

Embrulhando(?) C/C++ para Python

Wrapping manual

Embrulhando código Python com SWIG

Embrulhando código C com pyrex

ctypes

SIP

== Boost.Python==

Recomendações

Uma ou duas outras notas sobre wrapping

Pacotes para Multiprocessamento

threading

== Escrevendo (e indicando) extensões C threadsafe ==

parallelpython

Rpyc

pyMPI

multitask

Pacotes úteis

subprocess

rpy

matplotlib

Python Idiomático 3: new-style classes

Atributos gerenciados

Descriptors

GUI Gossip

Python 3.0