code: def bind(self, queue='', exchange='', routing_key='', arguments=None):
          
          if not compatibility.is_string(queue):
              raise AMQPInvalidArgument('queue should be a string')
          elif not compatibility.is_string(exchange):
              raise AMQPInvalidArgument('exchange should be a string')
          elif not compatibility.is_string(routing_key):
              raise AMQPInvalidArgument('routing_key should be a string')
          elif arguments is not None and not isinstance(arguments, dict):
              raise AMQPInvalidArgument('arguments should be a dict or None')
  
          bind_frame = pamqp_queue.Bind(queue=queue,
                                        exchange=exchange,
                                        routing_key=routing_key,
                                        arguments=arguments)
          return self._channel.rpc_request(bind_frame)
docs: Bind a Queue.
  
          :param str queue: Queue name
          :param str exchange: Exchange name
          :param str routing_key: The routing key to use
          :param dict arguments: Bind key/value arguments
  
          :raises AMQPInvalidArgument: Invalid Parameters
          :raises AMQPChannelError: Raises if the channel encountered an error.
          :raises AMQPConnectionError: Raises if the connection
                                       encountered an error.
  
          :rtype: dict