Add the operation message in NameError

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".

Here is only a part of the idea.

Now the function _compute_suggestion_error in “traceback.py” don’t know whether the NameError raised from getting or deleting. If it is deleting, the final list of the possible names should only contain the f_globals and f_locals.