Dreampie, o shell python que você sempre sonhou!

Para quem sente dificuldades em utilizar o shell padrão fornecido com o Python, seja por achá-lo simples demais ou por sentir falta de recursos mais comuns em IDEs mais completas, existe uma alternativa ao shell tradicional que é muito interessante e auxilia bastante na tarefa do desenvolvimento, sem perder as vantagens de um shell: um local para teste rápido de trechos de código Python. Estou falando do Dreampie, cujo slogan é: “O shell python que você sempre sonhou“. Abaixo, segue uma lista de recursos que julgo atraentes tanto para novatos quanto para programadores experientes na linguagem:

  • Completação de nomes de funções com menu visual
  • Apresentação de breve documentação da função, mostrando quais e quantas entradas tal função recebe, bem como seu valor de retorno
  • Possibilita a digitação de uma função completa (multi-linhas), para interpretação dela como um todo, após finalizada
  • Armazenamento e carregamento do histórico dos comandos digitados em outra sessão

Para instalá-lo em seu sistema Ubuntu 10.10, execute os seguintes comando em um terminal:

sudo apt-get install dreampie

Para sistemas operacionais Windows, Mac OS ou versões anteriores do Ubuntu, o Dreampie também pode ser baixado diretamente da página do projeto: http://dreampie.sourceforge.net/download.html

Abaixo, vemos uma figura ilustrando a tela do dreampie:

Captura de tela do Dreampie

Figura 1. Dreampie e opções de completação

A Figura 2 mostra uma das características mais interessantes do dreampie, que é o desenvolvimento de funções/classes inteiras para posterior interpretação pelo Python.

Figura 2. Uma função no dreampie

É isso, instale o dreampie e tire suas próprias conclusões.

docstrings

Docstrings são strings que inserimos dentro de nosso código Python com o intuito de fornecer uma explicação sobre o funcionamento deste. Essa string deve ser colocada como a primeira linha da definição de uma classe, método ou função.

O texto representado por tal string será apresentado quando for executado o comando help() utilizando como entrada a função onde a docstring está inserida. Considere o exemplo da função dobro:

def dobro(x):
    """Esta função retorna o dobro do número x"""
    return x*2

Quando executarmos o comando help sobre a função acima, receberemos o conteúdo da string colocada como a primeira linha:

>>> help(dobro)
Help on function dobro in module __main__:

dobro(x)
    Esta função retorna o dobro do número x

A string inserida como docstring também pode ser acessada através do atributo __doc__ daquela função:

>>> print dobro.__doc__
Esta função retorna o dobro do número x

Isso vale também para classes e métodos:

 class Data:
     """Classe utilizada para a representação de datas.
     As datas são representadas no formato dia, mês e ano.
     """
     ...
     def passaDia(self):
         """Acrescenta um dia na data."""
         ...

Ao invocarmos o comando help sobre a classe Data, obteremos o seguinte resultado:

>>> help(Data)
Help on class Data in module __main__:

class Data
 |  Classe utilizada para a representação de datas.
 |  As datas são representadas no formato dia, mês e ano.
 | 
 |  Methods defined here:
 | 
 |  passaDia(self)
 |      Acrescenta um dia na data.

Dúvidas sobre o que e como colocar em uma docstring? Consulte a PEP 257 (PEP é a sigla referente a: Python Enhancement Proposals).

Comandos de ajuda no shell Python

Quando não temos disponível a completação por tab no shell Python, podemos utilizar como alternativa o dir, um comando builtin do Python. Quando invocamos o comando dir, passando como argumento a tal comando um objeto, este irá retornar uma lista de strings contendo os nomes das funções e dos atributos disponíveis para tal tipo de objeto. Por exemplo, a Figura 1 mostra o resultado da execução da função dir sobre uma variável do tipo string, o que resulta em uma lista com todos os atributos/funções que variáveis de tal tipo possuem.

Comando dir do Python

Figura 1. O comando dir sobre um objeto string

Beleza, mas e o que fazer com esse monte de nomes se não sabemos exatamente o que as funções disponíveis fazem ou como elas funcionam? Para descobrir, basta usar o comando help, passando como argumento o nome da função da qual se deseja descobrir o funcionamento. No exemplo da Figura 2, foi digitado o comando:

>>> help(string.split)
Ajuda do comando split

Figura 2. A ajuda sobre o comando split

Para fechar o texto de ajuda, basta pressionar a tecla q (de quit), que o controle volta ao shell Python. Em um próximo post, veremos como adicionar documentação às nossas próprias funções.