When delete a name, python won’t try to find the name in builtins, it is different from getting.
However, now the suggestion for NameError cannot recognite this condition. When delete a builtin name, it only suggests that may be another name (may be also another builtin name which is invalid in this code too).
Maybe we can add the attribute for NameError to describe which operation raised it (getting or deleting). If it is getting, the suggestion will analyse the builtins namespace, while not if it is deleting.
Also, if user use the code like del print, we can also warning user that " Don’t delete any builtin names or it will crash the python".