On Thu, 16 Sep 2010 01:35:17 pm David Hutto wrote: > print("a is", a) > or > from future import *
Neither of those lines are correct. Given (say) a=42, in Python 2.6 the first line will print the tuple: ("a is", 42) while in Python 3.1 it will print the string: a is 42 Note the extra punctuation in the first version. For a quick-and-dirty script, you might not care about that, so passing tuples to print in 2.x is a reasonably simple work-around, but they are not the same. On the other hand, the second line does behave the same in both Python 2.6 and 3.1: >>> from future import * Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named future It might be the same, but I'm pretty sure it's not useful. What you are thinking of is the special module __future__ with leading and trailing double-underscores. __future__ is special -- the line from __future__ import ... (where ... is one or more feature) tells the Python compiler to change behaviour. If you use a "from __future__ import" line, it MUST be the first executable line in a module or script. It's okay for it to follow blank lines, comments or a doc-string, but it must be before any other line of Python code. In the case of Python 2.6 you can execute: from __future__ import print_function to turn print into a function like in 3.1. However, you can't use the asterisk form: >>> from __future__ import * File "<stdin>", line 1 SyntaxError: future feature * is not defined -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor