<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def step(h, logy=None, axes=None, **kwargs):
 """ Make a matplotlib step plot from a ROOT histogram. Parameters h : Hist A rootpy Hist logy : bool, optional (default=None) If True then clip the y range between 1E-300 and 1E300. If None (the default) then automatically determine if the axes are log-scale and if this clipping should be performed. axes : matplotlib Axes instance, optional (default=None) The axes to plot on. If None then use the global current axes. kwargs : additional keyword arguments, optional Additional keyword arguments are passed directly to matplotlib's fill_between function. Returns ------- Returns the value from matplotlib's fill_between function. """

    if axes is None:
        axes = plt.gca()
    if logy is None:
        logy = axes.get_yscale() == 'log'
    _set_defaults(h, kwargs, ['common', 'line'])
    if kwargs.get('color') is None:
        kwargs['color'] = h.GetLineColor('mpl')
    y = np.array(list(h.y()) + [0.])
    if logy:
        np.clip(y, 1E-300, 1E300, out=y)
    return axes.step(list(h.xedges()), y, where='post', **kwargs)