Mattsteel wrote: > Hello all. > I'm using Python 2.6.4 and Python 3.1.1. > My wish is to code in a 3.1-compliant way using 2.6, so I'm importing > the __future__ module. > I've found a funny thing comparing the two folliwing snippets that > differ for one line only, that is the position of __future__ import > (before or after the doc string). > > Well, I understand the subtle difference but still I wander what > really happen behind the scenes.
Are you sure? The second script has no module docstring, just a string literal somewhere in the module, and therefore no tests. You can see that by running it with the verbose option -v. Also, from __future__ import unicode_literals doesn't affect the repr() of a unicode instance. But the interactive interpreter invokes repr() on the result before it is printed: >>> from __future__ import unicode_literals >>> "yadda" u'yadda' > Comments are welcome. > > --------------------------------------- > #!/usr/bin/env python > ''' > >>> concat('hello','world') > 'hello world' > ''' > from __future__ import unicode_literals > def concat( first, second ): > return first + ' ' + second > if __name__ == "__main__": > import doctest > doctest.testmod() > --------------------------------------- > #!/usr/bin/env python > from __future__ import unicode_literals > ''' > >>> concat('hello','world') > 'hello world' > ''' > def concat( first, second ): > return first + ' ' + second > if __name__ == "__main__": > import doctest > doctest.testmod() > --------------------------------------- > > > The first way shows the following failure: > > --------------------------------------- > Failed example: > concat('hello','world') > Expected: > 'hello world' > Got: > u'hello world' > > --------------------------------------- > > Regards. > > Matt. -- http://mail.python.org/mailman/listinfo/python-list