Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #73580 > unrolled thread

Single underscore in interactive mode

Started bycandide <c.candide@laposte.net>
First post2014-06-25 08:20 -0700
Last post2014-06-25 17:56 -0400
Articles 6 — 5 participants

Back to article view | Back to comp.lang.python


Contents

  Single underscore in interactive mode candide <c.candide@laposte.net> - 2014-06-25 08:20 -0700
    Re: Single underscore in interactive mode Robert Kern <robert.kern@gmail.com> - 2014-06-25 18:53 +0100
    Re: Single underscore in interactive mode Terry Reedy <tjreedy@udel.edu> - 2014-06-25 14:30 -0400
      Re: Single underscore in interactive mode candide <c.candide@laposte.net> - 2014-06-25 12:39 -0700
    Re: Single underscore in interactive mode Lie Ryan <lie.1296@gmail.com> - 2014-06-25 19:57 +0100
    Re: Single underscore in interactive mode Dave Angel <davea@davea.name> - 2014-06-25 17:56 -0400

#73580 — Single underscore in interactive mode

Fromcandide <c.candide@laposte.net>
Date2014-06-25 08:20 -0700
SubjectSingle underscore in interactive mode
Message-ID<3db49432-3133-414f-9c44-ebb595a7ae8f@googlegroups.com>
According to the official documentation (The Python Language Reference, Release 3.2):


-----------------------------------
The special identifier _ is used in the interactive interpreter to
store the result of the last evaluation;
-----------------------------------


This description is not very specific. Which evaluation is it about ? Consider the following interactive mode session:

>>> z = 42 + 1
>>> _
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    _
NameError: name '_' is not defined
>>> 

As explained by the docs, an assignment statement _evaluates_ the expression on the right hand side. So we can deduce that at the very beginning of the 2nd prompt, "the result of the last evaluation" is 43. Nevertheless, calling _ raises a NameError exception!



In fact it seems that underscore returns the value of the last expression statement which is different from None :


>>> 4*10+2
42
>>> _
42
>>> "hello"
'hello'
>>> _
'hello'
>>> print(42)
42
>>> _
'hello'
>>> None
>>> _
'hello'
>>>


Can somebody provide a correct specification of the _ identifier in interactive mode ?

[toc] | [next] | [standalone]


#73581

FromRobert Kern <robert.kern@gmail.com>
Date2014-06-25 18:53 +0100
Message-ID<mailman.11237.1403718839.18130.python-list@python.org>
In reply to#73580
On 2014-06-25 16:20, candide wrote:
> According to the official documentation (The Python Language Reference, Release 3.2):
>
>
> -----------------------------------
> The special identifier _ is used in the interactive interpreter to
> store the result of the last evaluation;
> -----------------------------------
>
>
> This description is not very specific. Which evaluation is it about ? Consider the following interactive mode session:
>
>>>> z = 42 + 1
>>>> _
> Traceback (most recent call last):
>    File "<pyshell#1>", line 1, in <module>
>      _
> NameError: name '_' is not defined
>>>>
>
> As explained by the docs, an assignment statement _evaluates_ the expression on the right hand side. So we can deduce that at the very beginning of the 2nd prompt, "the result of the last evaluation" is 43. Nevertheless, calling _ raises a NameError exception!
>
>
>
> In fact it seems that underscore returns the value of the last expression statement which is different from None :
>
>
>>>> 4*10+2
> 42
>>>> _
> 42
>>>> "hello"
> 'hello'
>>>> _
> 'hello'
>>>> print(42)
> 42
>>>> _
> 'hello'
>>>> None
>>>> _
> 'hello'
>>>>
>
>
> Can somebody provide a correct specification of the _ identifier in interactive mode ?

See the documentation on `sys.displayhook()`, which is the function that makes 
the assignment:

https://docs.python.org/3/library/sys.html#sys.displayhook

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco

[toc] | [prev] | [next] | [standalone]


#73583

FromTerry Reedy <tjreedy@udel.edu>
Date2014-06-25 14:30 -0400
Message-ID<mailman.11238.1403721027.18130.python-list@python.org>
In reply to#73580
On 6/25/2014 11:20 AM, candide wrote:
> According to the official documentation (The Python Language Reference, Release 3.2):
>
>
> -----------------------------------
> The special identifier _ is used in the interactive interpreter to
> store the result of the last evaluation;
> -----------------------------------
>
>
> This description is not very specific.

Please say either in a tracker issue or here where you found this 
statement. I think 'evaluation' should be changed to 'non-None 
expression statement' and 'see sys.displayhook' added, linked to the 
entry in the sys doc.


-- 
Terry Jan Reedy

[toc] | [prev] | [next] | [standalone]


#73587

Fromcandide <c.candide@laposte.net>
Date2014-06-25 12:39 -0700
Message-ID<ec990ca8-cedb-4d0b-9488-7ab153431327@googlegroups.com>
In reply to#73583
> 
> Please say either in a tracker issue or here where you found this 
> 
> statement. 



https://docs.python.org/3.4/reference/lexical_analysis.html#reserved-classes-of-identifiers

[toc] | [prev] | [next] | [standalone]


#73585

FromLie Ryan <lie.1296@gmail.com>
Date2014-06-25 19:57 +0100
Message-ID<mailman.11240.1403722670.18130.python-list@python.org>
In reply to#73580
On 25/06/14 16:20, candide wrote:

> As explained by the docs, an assignment statement_evaluates_  the expression on the right hand side. So we can deduce that at the very beginning of the 2nd prompt, "the result of the last evaluation" is 43. Nevertheless, calling _ raises a NameError exception!

Only expression can be evaluated, statements are executed. The shell 
cannot see beyond the immediate statement.

The documentation for sys.displayhook() describes that None as a special 
case is neither printed nor stored in `__builtins__._`.

[toc] | [prev] | [next] | [standalone]


#73593

FromDave Angel <davea@davea.name>
Date2014-06-25 17:56 -0400
Message-ID<mailman.11244.1403733281.18130.python-list@python.org>
In reply to#73580
Terry Reedy <tjreedy@udel.edu> Wrote in message:
> On 6/25/2014 11:20 AM, candide wrote:
>> According to the official documentation (The Python Language Reference, Release 3.2):
>>
>>
>> -----------------------------------
>> The special identifier _ is used in the interactive interpreter to
>> store the result of the last evaluation;
>> -----------------------------------
>>
>>
>> This description is not very specific.
> 
> Please say either in a tracker issue or here where you found this 
> statement. I think 'evaluation' should be changed to 'non-None 
> expression statement' and 'see sys.displayhook' added, linked to the 
> entry in the sys doc.
> 
> 
https://pydocs2cn.readthedocs.org/en/latest/reference/lexical_anal
ysis.html

https://docs.python.org/2/reference/lexical_analysis.html


-- 
DaveA

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web