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

Diferenças para "AjudaInterpretador"

Diferenças entre as versões de 3 e 4
Revisão 3e 2004-07-23 21:05:55
Tamanho: 2951
Editor: RudaMoura
Comentário:
Revisão 4e 2004-07-23 21:31:51
Tamanho: 4388
Editor: RudaMoura
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
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
Vou deixar algumas dicas do que eu faço quando estou bisbilhotando algum módulo
Linha 19: Linha 17:
contém classes, funções e variáveis para serem usadas diretamente. contém classes, funções e variáveis para serem usadas pelo programador.
Linha 27: Linha 25:
Tirando os símbolos que o Python criou (''__doc__'' e ''__name__''), é o que eu tenho disponível para mexer com o módulo ''thread''. 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''.
Linha 31: Linha 30:
Para que serve mesmo o módulo thread? Para que serve o módulo thread?
Linha 47: Linha 46:
Uma função, que faz mesmo? Uma função, e o que ela faz mesmo?
Linha 63: Linha 62:
usar ''start_new_thread''. usar ''start_new_thread'' ao invés.
Linha 67: Linha 66:
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!
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'',
c
ontendo um resumo, descrição, parâmetros, hierarquia de classes, variáveis
e outros componentes. Muito informativo e útil.
Linha 72: Linha 72:
de volta o módulo thread...
{{{#!python
Então, de volta ao módulo thread...
{{{
Linha 95: Linha 95:

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:

{{{
$ 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.
}}}

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
{{{
$ pydoc -p 8000
}}}

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!

= Outros amigos =
  * http://docs.python.org/lib/lib.html
  * TabCompleta

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.

   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 pelo programador.

   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), 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?

   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, 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:

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

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

$ pydoc -p 8000

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!

Outros amigos