Doubly Linked Lists- Delete Node

inserting an Image inserting an Image inserting an Image inserting an Image inserting an Image

Code:

def delete(self, key):

        current = self.head

        while current:
            if current.data == key and current == self.head:
                # Case 1:
                if not current.next:
                    current = None 
                    self.head = None
                    return

                # Case 2:
                else:
                    nxt = current.next
                    current.next = None 
                    nxt.prev = None
                    current = None
                    self.head = nxt
                    return 

            elif current.data == key:
                # Case 3:
                if current.next:
                    nxt = current.next 
                    prev = current.prev
                    prev.next = nxt
                    nxt.prev = prev
                    current.next = None 
                    current.prev = None
                    current = None
                    return

                # Case 4:
                else:
                    prev = current.prev 
                    prev.next = None 
                    current.prev = None 
                    current = None 
                    return 
            current = current.next