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

Revisão 3e 2004-07-23 21:05:55

Excluir mensagem

AjudaInterpretador

Usar o interpretador Python para xeretar a linguagem é algo bem legal, mas também é possível fazer o mesmo com um módulo que não estamos habituado a usar. Vou deixar algumas dicas de 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.

   1 >>> x = dir
   2 >>> print x
   3 <built-in function dir>

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 diretamente.

   1 >>> import thread
   2 >>> dir(thread)
   3 ['LockType', '__doc__', '__name__', 'allocate', 'allocate_lock', 'error', 'exit', 'exit_thread', 'get_ident', 'interrupt_main', 'start_new', 'start_new_thread']>>>

Tirando os símbolos que o Python criou (doc e name), é o que eu tenho disponível para mexer com o módulo thread.

coisa.__doc__ é seu amigo

Para que serve mesmo o módulo thread?

   1 >>> print thread.__doc__
   2 This module provides primitive operations to write multi-threaded programs.
   3 The 'threading' module provides a more convenient interface.

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?

   1 >>> print thread.start_new
   2 <built-in function start_new>

Uma função, que 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.

O help é seu amigo

Existe uma forma bem amigável de obter ajuda no interpretador (creio eu, que só existe depois do Python 2.0), é com o comando help. O help exibe a saída igual a uma manpage do Unix. Contendo um resumo, descrição, parãmetros, hierarquia de classes e várias outros comentários. Muito útil!

de volta o módulo thread...

   1 >>> help(thread)
   2 
   3 Help on built-in module thread:
   4  
   5 NAME
   6     thread
   7  
   8 FILE
   9     (built-in)
  10  
  11 DESCRIPTION
  12     This module provides primitive operations to write multi-threaded programs.
  13     The 'threading' module provides a more convenient interface.
  14  
  15 CLASSES
  16     exceptions.Exception
  17         error
  18     __builtin__.object
  19         lock
  20 ...