On Thu, Jan 18, 2018 at 05:31:24PM +0000, Albert-Jan Roskam wrote:
> > Don't make the mistake of doing this:
> >
> > from collections import namedtuple
> > a = namedtuple('Bag', 'yes no dunno')(yes=1, no=0, dunno=42)
> > b = namedtuple('Bag', 'yes no dunno')(yes='okay', no='no way', dunno='not a
> > clue')
>
> But if I do:
> Bag = namedtuple('Bag', 'yes no dunno')
> ... and then I create hundreds of Bag instances, this doesn't have a
> large memory footprint, right? (Because of __slots__) Or is a regular
> tuple still (much) less wasteful?
Correct.
namedtuple instances are *nearly* as compact as regular tuples. Making
many instances of the one named tuple class is efficient; making many
named tuple classes, with one instance each, is slow and wasteful of
memory.
--
Steve
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor