cela peut ne pas être une terre bouleversante carence en python, mais je reste interroger sur la raison d'être le comportement suivant: quand je courseétrange erreur de syntaxe en Python, version 2.6 et 3.1
source = """
print('helo')
if __name__ == '__main__':
print('yeah!')
#"""
print(compile(source, '<whatever>', 'exec'))
i :: obtenir
File "<whatever>", line 6
#
^
SyntaxError: invalid syntax
je peux éviter cette exception par (1) la suppression du #
arrière; (2) en supprimant ou en supprimant les lignes if __name__ == '__main__':\n print('yeah!')
; (3) ajouter une nouvelle ligne à la fin de la source .
Par ailleurs, si j'ai la fin de la source sans fin de ligne droite derrière le print('yeah!')
, la source compilera également sans erreur.
Je pourrais également reproduire ce comportement avec python 2.6, donc ce n'est pas nouveau à la série 3k.
je trouve cette erreur d'être très irritant, d'autant plus que quand je mis dessus d'une source dans un fichier et l'exécuter directement ou avoir importé, aucune erreur ne se produit, qui est le comportement attendu.
un #
(hash) en dehors d'une chaîne littérale doit toujours représenter le début d'un commentaire (éventuellement vide) dans une source python; de plus, la présence ou l'absence d'une clause if __name__ == '__main__'
ne devrait pas modifier l'interprétation d'une soure au niveau syntaxique.
Quelqu'un peut-il reproduire le problème ci-dessus, et/ou commenter le phénomène ?
acclamations
J'ai été capable de le reproduire. Bizarre - Je suis intéressé par la réponse aussi. –
Reproduit en 2.6.1. Cela semble être un bug pour moi aussi, mais c'est un cas extrême. –
Vous pourriez mettre votre "mise à jour" comme réponse et l'accepter. – kennytm