How to Suppress Interactive Assignment to "_"

J

JKPeck

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.

TIA,
Jon Peck
 
P

Peter Otten

JKPeck said:
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 displayhook.py
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 displayhook.pyTraceback (most recent call last):
42
 
J

JKPeck

$ cat displayhook.py
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 displayhook.py>>> 42
42

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '_' is not defined>>> _last_result

42

Thanks. It's just what I needed.
-Jon Peck
 
G

Gabriel Genellina

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.

$ cat displayhook.py
[...]

Thanks. It's just what I needed.

In case you didn't know, look at sitecustomize.py and the PYTHONSTARTUP
[2] environment variable. They allow for the above code to be
automatically executed.

[1] http://docs.python.org/library/site.html#index-549
[2] http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,045
Latest member
DRCM

Latest Threads

Top