Single underscore in interactive mode
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
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
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
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
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
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