Vou deixar algumas dicas do que eu faço quando estou bisbilhotando algum módulo que não conheço.
O print é seu amigo
Use e abuse, se não sabe o que é coisa então print coisa.
x é um alias para a função dir.
O dir é seu amigo
O dir lista os símbolos públicos de um módulo, geralmente contém classes, funções e variáveis para serem usadas pelo programador.
Tirando os símbolos que o Python criou (doc e name), esta é lista do que eu tenho disponível para mexer com o módulo thread.
coisa.__doc__ é seu amigo
Para que serve o módulo thread?
Ok, é pra fazer manipular threads, de uma maneira "primitiva" (baixo-nível). Tem uma dica pra eu usar o módulo threading que é mais amigável.
O que é o símbolo start_new nesse módulo?
Uma função, e o que ela faz mesmo?
1 >>> print thread.start_new.__doc__
2 start_new_thread(function, args[, kwargs])
3 (start_new() is an obsolete synonym)
4
5 Start a new thread and return its identifier. The thread will call the
6 function with positional arguments from the tuple args and keyword arguments
7 taken from the optional dictionary kwargs. The thread exits when the
8 function returns; the return value is ignored. The thread will also exit
9 when the function raises an unhandled exception; a stack trace will be
10 printed unless the exception is SystemExit.
Hmm legal, eu sei os argumentos que a função utiliza e tenho a descrição completa dela, tem até uma dica que essa função é obsoleta! Eu deveria usar start_new_thread ao invés.
O help é seu amigo
Existe uma forma mais amigável de obter ajuda no interpretador (só disponível nas versões 2 do Python), é utilizando o comando help. O help(coisa) exibe a saída igual a uma manpage do Unix de coisa, contendo um resumo, descrição, parâmetros, hierarquia de classes, variáveis e outros componentes. Muito informativo e útil.
Então, de volta ao módulo thread...
>>> help(thread) Help on built-in module thread: NAME thread FILE (built-in) DESCRIPTION This module provides primitive operations to write multi-threaded programs. The 'threading' module provides a more convenient interface. CLASSES exceptions.Exception error __builtin__.object lock ...
No caso de eu usar o comando help(thread.start_new_thread eu vou obter o mesmo que o comando print thread.start_new_thread.__doc__.
O pydoc é seu amigo
O pydoc é o help disponível no prompt do sistema! Ok, infelizmente as distribuiçoes Linux não costumam por este utilitário no "bin" do sistema, mas é fácil resolver isso:
# ln -sf /usr/lib/python2.3/pydoc.py /usr/local/bin/pydoc
Não esqueça de trocar o python2.3 com a versão do seu Python. Agora é fácil obter ajuda de qualquer módulo em Python. É só chamar pydoc thread ou então pydoc thread.start_new_thread.
Com o pydoc é possível também procurar por uma palavra-chave em toda a documentação dos módulos, digamos que eu queria procurar por shell', eu faço: Uma listagem completa de módulos que fazem referência ao termo shell. O pydoc é capaz de fazer mais coisas ainda! Não troque de canal, não saia da sua cadeira. Se você usar e abrir o seu browser favorito na página localhost:8000, sim, toda a documentação dos módulos Python, de forma organizada e clicável!
$ pydoc -k shell
commands - Execute shell commands via os.popen() and return status, output.
fnmatch - Filename matching with shell patterns.
idlelib.PyShell
idlelib.ScriptBinding - Extension to execute code outside the Python shell window.
shlex - A lexical analyzer class for simple shell-like syntaxes.
$ pydoc -p 8000
Outros amigos