def _asizeof(objs, deep=100, code=False, align=8, verbose=0):
    '''Combine size one or more objects.
    '''
    if align > 1:
        m = align - 1
        if (align & m) != 0:
            raise ValueError('asizeof invalid alignment: %r' % align)
    else:
        m = 0
    if code:
        t = _types_code
    else:
        t = _types_data
    v = {0: deep}  # recursion depth
     # positional arguments
    s = _sum([_sizer(_obj(o), deep, code, m, t, v) for o in objs])

     # print some details
    if verbose > 0:
        d = deep - v[0];  del v[0]
        w = 1 + len(str(s))
         # print size and stats
        _print('asizeof(%s, verbose=%d): ...', _repr(objs), verbose)
        if code:
           _print('%*d bytes%s (incl. code)', w, s, _SI(s))
        else:
           _print('%*d bytes%s', w, s, _SI(s))
        if m:
           _print('%*d byte aligned', w, m + 1)
        _print('%*d byte sizeof(void*)', w, _Csizeof_voidp)
        _print('%*d objects sized', w, len(v))
        _print('%*d objects seen', w, _sum(v.values()))
        if d > 0:
           _print('%*d deepest recursion', w, d)
        if verbose > 1:
             # print types
            def _sorted(args):
                try:  # XXX Python 3.0
                    args.sort()
                except AttributeError:
                    pass
                return args
            _print('%*d types:  (_ref(), _len(), basicsize, itemsize)', w, len(t))
            for t in _sorted(t.items()):
               _print('%*s %r:  %r', w, '', *t)
    return s
Combine size one or more objects.
    
recipes/Python/544288_Size_of_Python_objects/recipe-544288.py