Blog em português onde relato a minha aprendizagem de Python. Sendo um blog, ele deve ser lido de baixo para cima e é escrito orientado a uma audiência com alguns conhecimentos de programação. Não tentando ser uma fonte exaustiva de conhecimento sobre Python, pode, no entanto, servir como crash course a esta linguagem.

Thursday, August 20, 2009

docstrings

Noutras linguagens a documentação de uma função é algo que apenas existe em compile-time, não sendo, em geral. possível consultar ou mesmo manipular essa documentação em runtime. Em python, seguindo a filosofia de que tudo é um objecto de 1ª ordem e reificado, existe uma forma especial para definir a documentação para uma função.
Se a primeira cláusula do corpo de uma função for uma string, essa string é associada ao atributo __doc__ da função e fica presente para ser lida ou escrita em runtime. Chama-se a esta string uma docstring, de Documentation String.
Note-se que me referi ao atributo de uma função. Uma função é um objecto como outro qualquer e, como tal, pode ter atributos.

Um exemplo*:
def x_intercept(m, b):
    """
    Return the zero of the line y=m*x+b.  The zero of a
    line is the point at which it crosses the x axis (y=0).
    """
    return -b/m
Um exemplo útil para as docstrings está no seu uso por parte da função 
standard help que imprime informação sobre o seu argumento. Assim:
>>> help(x_intercept)
Help on function x_intercept in module __main__:

x_intercept(m, b)
    Return the zero of the line y=m*x+b.  The zero of a
    line is the point at which it crosses the x axis (y=0).

>>>
As strings criadas com 3 " mantém a sua formatação (quebras de linha, 
espaços e tabs).
*retirado de http://epydoc.sourceforge.net/docstrings.html