Je suis tombé sur le format d'en-tête suivant pour les fichiers source Python dans un document sur les instructions de codage Python:
#!/usr/bin/env python
"""Foobar.py: Description of what foobar does."""
__author__ = "Barack Obama"
__copyright__ = "Copyright 2009, Planet Earth"
Est-ce le format standard des en-têtes dans le monde Python? Quels autres champs/informations puis-je mettre dans l'en-tête? Python les gourous partagent vos recommandations pour de bons Python sources::)
Toutes ses métadonnées pour le module Foobar
.
Le premier est le docstring
du module, qui est déjà expliqué dans réponse de Peter .
Comment organiser mes modules (fichiers source)? (Archive)
La première ligne de chaque fichier doit être
#!/usr/bin/env python
. Cela permet d’exécuter le fichier sous forme de script appelant implicitement l’interpréteur, par exemple. dans un contexte CGI.Suivant devrait être la chaîne de caractères avec une description. Si la description est longue, la première ligne doit être un court résumé qui a du sens, séparé du reste par une nouvelle ligne.
Tout le code, y compris les instructions d'importation, doit suivre la docstring. Sinon, la docstring ne sera pas reconnue par l'interpréteur et vous n'y aurez pas accès. lors de sessions interactives (c.-à-d. via
obj.__doc__
) ou lors de la génération de documentation avec des outils automatisés.Importez d'abord les modules intégrés, suivis des modules tiers, suivis de toute modification apportée au chemin et de vos propres modules. En particulier, ajouts au chemin et les noms de vos modules sont susceptibles de changer rapidement: les garder au même endroit les rend plus faciles à trouver.
Ensuite devrait figurer l'information sur l'auteur. Cette information devrait suivre le format suivant:
__author__ = "Rob Knight, Gavin Huttley, and Peter Maxwell" __copyright__ = "Copyright 2007, The Cogent Project" __credits__ = ["Rob Knight", "Peter Maxwell", "Gavin Huttley", "Matthew Wakefield"] __license__ = "GPL" __version__ = "1.0.1" __maintainer__ = "Rob Knight" __email__ = "[email protected]" __status__ = "Production"
Le statut doit généralement être "Prototype", "Développement" ou "Production".
__maintainer__
devrait être la personne qui corrigera les bogues et apportera des améliorations si elle est importée.__credits__
diffère de__author__
en ce que__credits__
inclut les personnes qui ont signalé des corrections de bugs, des suggestions, etc. sans écrire le code.
Ici vous avez plus d'informations, listant __author__
, __authors__
, __contact__
, __copyright__
, __license__
, __deprecated__
, __date__
et __version__
en tant que métadonnées reconnues.
Je privilégie fortement les en-têtes de fichiers minimaux, ce qui signifie simplement:
#!
line) s'il s'agit d'un script exécutable import os # standard library
import sys
import requests # 3rd party packages
import mypackage.mymodule # local source
import mypackage.myothermodule
c'est à dire. trois groupes d’importations, séparés par une seule ligne vierge. Dans chaque groupe, les importations sont triées. Le groupe final, les importations de source locale, peut être soit des importations absolues comme indiqué, soit des importations relatives explicites.
Tout le reste est une perte de temps, d'espace visuel et est activement trompeur.
Si vous avez des renonciations légales ou des informations sur les licences, elles sont placées dans un fichier séparé. Il n’est pas nécessaire d’infecter tous les fichiers de code source. Votre droit d'auteur devrait en faire partie. Les gens devraient pouvoir le trouver dans votre fichier LICENSE
, pas dans un code source aléatoire.
Les métadonnées telles que l'auteur et les dates sont déjà gérées par votre contrôle de source. Il n'est pas nécessaire d'ajouter une version moins détaillée, erronée et obsolète des mêmes informations dans le fichier lui-même.
Je ne crois pas qu'il y ait d'autres données que tout le monde a besoin de mettre dans tous ses fichiers sources. Vous pouvez avoir une obligation particulière de le faire, mais de telles choses ne s'appliquent, par définition, qu'à vous. Ils n'ont pas leur place dans les "en-têtes généraux recommandés pour tout le monde".
Les réponses ci-dessus sont vraiment complètes, mais si vous voulez un en-tête rapide et sale à copier-coller, utilisez ceci:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Module documentation goes here
and here
and ...
"""
Pourquoi c'est un bon:
Voir aussi: https://www.python.org/dev/peps/pep-0263/
Si vous écrivez simplement une classe dans chaque fichier, vous n'avez même pas besoin de la documentation (elle irait à l'intérieur du document de classe).
Voir aussi PEP 26 si vous utilisez un jeu de caractères non ascii
Abstrait
Ce PEP propose d'introduire une syntaxe permettant de déclarer le codage d'un fichier source Python. Les informations de codage sont ensuite utilisées par l’analyseur Python pour interpréter le fichier à l’aide du codage donné. Plus particulièrement, cela améliore l'interprétation des littéraux Unicode dans le code source et permet d'écrire des littéraux Unicode en utilisant par exemple. UTF-8 directement dans un éditeur compatible Unicode.
Problème
Dans Python 2.1, les littéraux Unicode ne peuvent être écrits qu'en utilisant le codage "unicode-escape" basé sur le latin-1. Ceci rend l'environnement de programmation plutôt hostile aux Python utilisateurs qui vivent et travaillent dans des environnements locaux autres que Latin-1, tels que de nombreux pays asiatiques. Les programmeurs peuvent écrire leurs chaînes de 8 bits en utilisant le codage favori, mais sont liés au codage "unicode-escape" pour les littéraux Unicode.
Solution proposée
Je propose de rendre le code source Python codant à la fois visible et modifiable fichier par source en utilisant un commentaire spécial en haut du fichier pour déclarer le codage.
Pour que Python connaisse cette déclaration de codage, un certain nombre de modifications de concept sont nécessaires en ce qui concerne le traitement des données de Python.
Définir le codage
Python utilisera par défaut ASCII comme codage standard si aucun autre conseil de codage n'est donné.
Pour définir un codage de code source, un commentaire magique doit être placé dans les fichiers source en tant que première ou deuxième ligne du fichier, par exemple:
# coding=<encoding name>
ou (en utilisant des formats reconnus par les éditeurs populaires)
#!/usr/bin/python # -*- coding: <encoding name> -*-
ou
#!/usr/bin/python # vim: set fileencoding=<encoding name> :
...