133 votes

Dois-je utiliser la déclaration d'encodage dans Python 3 ?

Python 3 utilise par défaut le codage UTF-8 pour les fichiers de code source. Dois-je quand même utiliser la déclaration d'encodage au début de chaque fichier source ? Comme # -*- coding: utf-8 -*-

136voto

Martijn Pieters Points 271458

Parce que la valeur par défaut est UTF-8, vous ne devez utiliser cette déclaration que lorsque vous vous écartez de la valeur par défaut, ou si vous comptez sur d'autres outils (comme votre IDE ou votre éditeur de texte) pour utiliser cette information.

En d'autres termes, en ce qui concerne Python Ce n'est que lorsque vous voulez utiliser un encodage différent que vous devez utiliser cette déclaration.

D'autres outils, tels que votre éditeur, peuvent prendre en charge une syntaxe similaire, c'est pourquoi la fonction Spécification PEP 263 permet une grande souplesse dans la syntaxe (il doit s'agir d'un commentaire, le texte coding doit être présent, suivi soit d'un : o = et un espace facultatif, suivi d'un codec reconnu).

Notez que cela ne s'applique qu'à la façon dont Python lit le code source . Il ne s'applique pas à l'exécution de ce code, donc pas à la façon dont l'impression, l'ouverture de fichiers ou toute autre opération d'E/S traduisent entre les octets et l'Unicode. Pour plus de détails sur Python, l'Unicode et les encodages, je vous conseille vivement de lire le document suivant HOWTO Python Unicode ou le très complet Unicode pragmatique parler par Ned Batchelder.

12voto

ups Points 120

Non, si :

  • l'ensemble du projet, utilisez uniquement le UTF-8 qui est un défaut.
  • et vous êtes sûr que votre outil IDE n'a pas besoin de cette déclaration d'encodage dans chaque fichier.

Oui, si

  • votre projet repose sur un encodage différent
  • ou s'appuie sur de nombreux codages.

Pour les projets multi-encodages :

Si certains fichiers sont codés en format non-utf-8 alors même pour ces codées dans UTF-8 vous devez également ajouter la déclaration d'encodage, car la règle d'or est Explicit is better than implicit.

Référence :

  • PyCharm n'a pas besoin de cette déclaration :

configuration de l'encodage pour un fichier spécifique dans pycharm

  • vim n'a pas besoin de cette déclaration, mais :
# vim: set fileencoding=<encoding name> :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X