<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def push_dcp(self, event, callback, position="right"):
 """Connect a dcp, push a function. :param event: str,unicode: A unique identifier name for dcp. :param callback: callable: Corresponding to the event to perform a function. :param position: The position of the insertion function, right(default) and left. :raises: DCPError,NotCallableError: raises an exception .. versionadded:: 2.1.0 """

        if event and isinstance(event, string_types) and callable(callback) and position in ("left", "right"):
            if event in self._dcp_funcs:
                if position == "right":
                    self._dcp_funcs[event].append(callback)
                else:
                    self._dcp_funcs[event].appendleft(callback)
            else:
                self._dcp_funcs[event] = deque([callback])
        else:
            if not callable(callback):
                raise NotCallableError("The event %s cannot be called back" % event)
            raise DCPError("Invalid parameter")