On Saturday, October 25, 2014 9:56:02 AM UTC+5:30, Ben Finney wrote: > Rustom Mody writes: > > > On Saturday, October 25, 2014 9:17:12 AM UTC+5:30, Rustom Mody wrote: > > > 4. The least useful statement to try at the interpreter is print. > > > > Yeah this is python2 thinking; in python 3, print is technically an > > expression. > > This is wrong thinking. In Python 3, print is a function.
[tl;dr at bottom] Ok I was a bit sloppy -- should have said 'the print' But there was no specific prior use that 'the' would refer to. So one could say (if you like!): | | Python 2 | Python 3 | | print | syntax | function | | print(x) | statement | expression | I was really talking of the second row not the first So much for being legalistic -- An approach which is ultimately not helpful. For one thing function is one kind of expression ie its a subset not a disjoint relation. More important (in this case) its bad pedagogy. Its generally accepted that side-effecting functions are not a good idea -- typically a function that returns something and changes global state. In that sense its best to think of print(x) as syntactically an expression, semantically a statement. Or put differently, the following error is more poorly reported in python3 than in python2 Python 2.7.8 (default, Oct 7 2014, 17:59:21) [GCC 4.9.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 2 + (print 2) File "<stdin>", line 1 2 + (print 2) ^ SyntaxError: invalid syntax Python 3.4.2 (default, Oct 8 2014, 10:45:20) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 2 + (print (2)) 2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'NoneType' ========= tl;dr I dont think all this is very helpful to Seymore -- https://mail.python.org/mailman/listinfo/python-list