How does a function know the docstring of its code object?

Ian Kelly ian.g.kelly at gmail.com
Thu Sep 15 17:17:53 CEST 2011


On Thu, Sep 15, 2011 at 5:10 AM, Arnaud Delobelle <arnodel at gmail.com> wrote:
> Hi all,
>
> You can do:
>
> def foo():
>    "foodoc"
>    pass
>
> function = type(lambda:0)
> foo2 = function(foo.__code__, globals())
> assert foo2.__doc__ == "foodoc"
>
> I am wondering how the function constructor knows that foo.__code__
> has a docstring.  I can see that
>
>    foo.__code__.co_consts == ('foodoc',)
>
> But I can't find where in foo.__code__ is stored the information that
> the first constant in foo.__code__ is actually a docstring.

>From what I'm seeing, it appears that if there is no docstring, the
first constant will always be None.  So if the first constant is a
string, then it's a docstring.



More information about the Python-list mailing list