def _load(abspath, serializer_type,
          loader_func=None,
          decompress=True,
          verbose=False,
          **kwargs):
    """load object from file.

    :param abspath: The file path you want load from.
    :type abspath: str

    :param serializer_type: 'binary' or 'str'.
    :type serializer_type: str

    :param loader_func: A loader function that takes binary as input, return
        an object.
    :type loader_func: callable function

    :param decompress: default ``False``. If True, then decompress binary.
    :type decompress: bool

    :param verbose: default True, help-message-display trigger.
    :type verbose: boolean
    """
    _check_serializer_type(serializer_type)

    if not inspect.isfunction(loader_func):
        raise TypeError("loader_func has to be a function take binary as input "
                        "and return an object!")

    prt_console("\nLoad from '%s' ..." % abspath, verbose)
    if not os.path.exists(abspath):
        raise ValueError("'%s' doesn't exist." % abspath)

    st = time.clock()

    with open(abspath, "rb") as f:
        b = f.read()
        if decompress:
            b = zlib.decompress(b)

    if serializer_type is "str":
        obj = loader_func(b.decode("utf-8"), **kwargs)
    else:
        obj = loader_func(b, **kwargs)

    elapsed = time.clock() - st
    prt_console("    Complete! Elapse %.6f sec." % elapsed, verbose)

    return obj