How to Suppress Interactive Assignment to "_"

Peter Otten __peter__ at
Fri Jan 1 18:06:18 CET 2010

JKPeck wrote:

> The gettext module uses the convention of defining a function named
> "_" that maps text into its translation.
> This conflicts with the automatic interactive interpreter assignment
> of expressions to a variable with that same name.
> While if you are careful, you can avoid that assignment while
> debugging, and you can choose a different function for gettext, this
> conflict is a nuisance.  I am looking for a way to suppress the
> expression assignment to _ or to change the name of the variable
> assigned to.  Is this possible?  Using Python 2.6.

$ cat
import sys
import __builtin__ as builtin

def displayhook(obj):
    if obj is not None:
        builtin._last_result = obj
        print repr(obj)

sys.displayhook = displayhook
$ python -i
>>> 42
>>> _
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '_' is not defined
>>> _last_result

More information about the Python-list mailing list