1596
Comentário:
|
2951
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 4: | Linha 4: |
novo. | que não conheço. |
Linha 18: | Linha 18: |
O dir lista os símbolos públicos de um módulo. Contém classes, funções, variáveis, etc. |
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. |
Linha 22: | Linha 22: |
>>> import shutil >>> dir(shutil) ['Error', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_build_cmdtuple', 'copy', 'copy2', 'copyfile', 'copyfileobj', 'copymode', 'copystat', 'copytree', 'exceptions', 'move', 'os', 'rmtree', 'stat', 'sys'] |
>>> import thread >>> dir(thread) ['LockType', '__doc__', '__name__', 'allocate', 'allocate_lock', 'error', 'exit', 'exit_thread', 'get_ident', 'interrupt_main', 'start_new', 'start_new_thread']>>> |
Linha 27: | Linha 27: |
Tirando os símbolos "privados" (os __símbolos__), é o que eu tenho disponível para mexer com o módulo shutil. | Tirando os símbolos que o Python criou (''__doc__'' e ''__name__''), é o que eu tenho disponível para mexer com o módulo ''thread''. |
Linha 31: | Linha 31: |
Todo software bem escrito em Python deve ser ter documentação decente. Pra que serve mesmo o módulo shutil? |
Para que serve mesmo o módulo thread? |
Linha 34: | Linha 33: |
>>> print shutil.__doc__ Utility functions for copying files and directory trees. XXX The functions here don't copy the resource fork or other metadata on Mac. |
>>> print thread.__doc__ This module provides primitive operations to write multi-threaded programs. The 'threading' module provides a more convenient interface. |
Linha 40: | Linha 38: |
Ok, funções para manipular arquivos (copiar). Tem um comentário em especial para usuários de Mac, bom, não sou mais usuário de Mac :) |
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. |
Linha 43: | Linha 41: |
O que o símbolo ''move'' dentro desse módulo? |
O que é o símbolo ''start_new'' nesse módulo? |
Linha 46: | Linha 43: |
>>> print shutil.move <function move at 0xf7012b8c> |
>>> print thread.start_new <built-in function start_new> |
Linha 50: | Linha 47: |
Hum, função, que faz o que? como usa? | Uma função, que faz mesmo? {{{#!python >>> print thread.start_new.__doc__ start_new_thread(function, args[, kwargs]) (start_new() is an obsolete synonym) Start a new thread and return its identifier. The thread will call the function with positional arguments from the tuple args and keyword arguments taken from the optional dictionary kwargs. The thread exits when the function returns; the return value is ignored. The thread will also exit when the function raises an unhandled exception; a stack trace will be printed unless the exception is SystemExit. }}} |
Linha 52: | Linha 61: |
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... |
|
Linha 53: | Linha 74: |
>>> help(thread) | |
Linha 54: | Linha 76: |
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 ... |
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.
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.
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?
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, 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 ...