<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def zonal_mean_surface(num_lat=90, water_depth=10., lat=None, **kwargs):
 """Creates a 1D slab ocean Domain in latitude with uniform water depth. Domain has a single heat capacity according to the specified water depth. **Function-call argument** \n :param int num_lat: number of latitude points [default: 90] :param float water_depth: depth of the slab ocean in meters [default: 10.] :param lat: specification for latitude axis (optional) :type lat: :class:`~climlab.domain.axis.Axis` or latitude array :raises: :exc:`ValueError` if `lat` is given but neither Axis nor latitude array. :returns: surface domain :rtype: :class:`SlabOcean` :Example: :: climlab Domain object with domain_type=ocean and shape=(36, 1) """

    if lat is None:
        latax = Axis(axis_type='lat', num_points=num_lat)
    elif isinstance(lat, Axis):
        latax = lat
    else:
        try:
            latax = Axis(axis_type='lat', points=lat)
        except:
            raise ValueError('lat must be Axis object or latitude array')
    depthax = Axis(axis_type='depth', bounds=[water_depth, 0.])
    axes = {'depth': depthax, 'lat': latax}
    slab = SlabOcean(axes=axes, **kwargs)
    return slab