human
I wrote the below code

    if (not allocation):
        allocation = []
    if (not initialization):
        initialization = []
    def lazy_wrapper(init):
        def lazy_init(*args, **kwargs):
            self = args[0]
            self.allocation_args = (getattr(self, 'allocation_args', []) + allocation)
            self.initialization_args = (getattr(self, 'initialization_args', []) + initialization)
            kwargs = dict_union(args_to_kwargs(args, init), kwargs)
            for allocation_arg in allocation:
                kwargs.setdefault(allocation_arg, NoneAllocation)
            for initialization_arg in initialization:
                kwargs.setdefault(initialization_arg, NoneInitialization)
            return init(**kwargs)
        wraps(init)(lazy_init)
        return lazy_init
    return lazy_wrapper

What's a good function header?
 ... Here's a good function header?
assistant
#Here's a good function header.

def lazy(allocation=None, initialization=None):