web-dev-qa-db-fra.com

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

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

86
Mateusz Jagiełło

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

En d'autres termes, en ce qui concerne Python est concerné , ce n'est que lorsque vous souhaitez utiliser un encodage qui diffère que vous doivent utiliser cette déclaration.

D'autres outils, comme votre éditeur, peuvent prendre en charge une syntaxe similaire, c'est pourquoi la spécification PEP 26 permet une flexibilité considérable dans la syntaxe (il doit s'agir d'un commentaire, le texte coding doit être là, suivi soit d'un : ou = caractère et espace facultatif, suivi d'un codec reconnu).

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

88
Martijn Pieters

Non, si:

  • l'ensemble du projet utilise uniquement le UTF-8, qui est une valeur par 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 encodages.

Pour les projets multi-encodages:

Si certains fichiers sont encodés dans le non-utf-8, puis même pour ceux codés en UTF-8 vous devez également ajouter une 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> :
1
Sławomir Lenart