Single underscore in interactive mode

2014-06-25 Thread candide
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 ?
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Single underscore in interactive mode

2014-06-25 Thread Robert Kern

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

--
https://mail.python.org/mailman/listinfo/python-list


Re: Single underscore in interactive mode

2014-06-25 Thread Terry Reedy

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

--
https://mail.python.org/mailman/listinfo/python-list


Re: Single underscore in interactive mode

2014-06-25 Thread Lie Ryan

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__._`.


--
https://mail.python.org/mailman/listinfo/python-list


Re: Single underscore in interactive mode

2014-06-25 Thread candide

 
 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
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Single underscore in interactive mode

2014-06-25 Thread Dave Angel
Terry Reedy tjre...@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

-- 
https://mail.python.org/mailman/listinfo/python-list