How to restore a builtin that I overwrote by accident?

weronika picture weronika · Jun 17, 2013 · Viewed 10.8k times · Source

I accidentally overwrote set by using it as a variable name in an interactive python session - is there any way that I can get access to the original set function without just restarting my session?

(I have so much stuff in that session that I'd rather not have to do that, although of course I can if necessary.)

Answer

Martijn Pieters picture Martijn Pieters · Jun 17, 2013

Just delete the name that is masking the builtin:

>>> set = 'oops'
>>> set
'oops'
>>> del set
>>> set
<type 'set'>

You can always still access the original built-in through the builtins module (__builtin__ on Python 2, with underscores and no s); use this if you want to override the built-in but want to defer to the original still from the override:

>>> import builtins
>>> builtins.set
<type 'set'>

If you have trouble locating where the masking name is defined, do check all namespaces from your current one up to the built-ins; see Short description of the scoping rules? for what scopes may apply to your current situation.