Le script Python
'''
a
'''
from __future__ import print_function
fonctionne bien (c.-à-d., ne fait rien), mais
'''
a
'''
'''
b
'''
from __future__ import print_function
provoque:
File "C:\test.py", line 8
from __future__ import print_function
SyntaxError: from __future__ imports must occur at the beginning of the file
Pourquoi?
https://docs.python.org/2/reference/simple_stmts.html#future dit que:
Une future déclaration doit apparaître en haut du module. Les seules lignes qui peuvent apparaître avant une future déclaration sont:
- le module docstring (le cas échéant),
- commentaires ,
- lignes vierges , et
- d'autres déclarations futures.
Le deuxième exemple contient uniquement des commentaires et des lignes vides avant le from __future__ import print_function
, et pourtant ça ne marche pas.
J'utilise Python 2.7.
... qui semble être en contradiction avec le deuxième exemple que j'ai donné.
Non, car ce ne sont pas des commentaires, ce sont des chaînes.
La première chaîne est éluée du code en tant que docstring, mais la deuxième chaîne devient une instruction dans le code composé de la chaîne elle-même. __future__
importe doit être avant toutes les lignes pertinentes pour le code, même celles qui n'ont aucun effet.