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

Ian Kelly ian.g.kelly at
Thu Sep 15 11:17:53 EDT 2011

On Thu, Sep 15, 2011 at 5:10 AM, Arnaud Delobelle <arnodel at> 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