2951
Comentário:
|
4388
|
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'', contendo 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.
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