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 - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor