web-dev-qa-db-fra.com

Python: Qu'est-ce qu'un en-tête?

Je suis nouveau sur Python et la programmation en général. Je suis un module à l’université qui me demande d’écrire des programmes assez basiques en Python. Cependant, j'ai eu ce retour sur ma dernière mission:

Il devrait y avoir un bloc d’en-tête contenant le nom du fichier, le nom de l’auteur, la date de création, la date de modification et la version python.

Qu'est-ce qu'un bloc d'en-tête? S'agit-il uniquement de commentaires en haut de votre code ou s'agit-il de quelque chose qui s'imprime lorsque le programme est exécuté? Ou autre chose?

9
Victoria Mackie

Il y a quelque chose appelé Docstring en python (et voici quelques conventions sur la façon d'écrire du code python en général - PEP 8 ) échappé par un guillemet simple triple ''' ou un guillemet double double """ bien adapté à commentaires multilignes:

'''
    File name: test.py
    Author: Peter Test
    Date created: 4/20/2013
    Date last modified: 4/25/2013
    Python Version: 2.7
'''

Vous pouvez également utiliser des variables spéciales ultérieurement (lors de la programmation d'un module) dédiées à contenir des informations telles que:

__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"

Plus de détails dans répondez ici .

15
Vyktor

Votre instructeur souhaite que vous ajoutiez des informations à la section supérieure du code source de votre travail, comme ceci:

####################################
# File name: ...                   #
# Author: ...                      #
# Submission:                      #
# Instructor:                      #
####################################
5
Barış Akkurt

Un bloc d'en-tête ne sont que des commentaires en haut du code. Il n'imprime pas lorsque le programme est exécuté.

Un exemple pourrait ressembler à ceci:

# File name: test.py
# Author: Peter Test
# Date created: 4/20/2013
# Date last modified: 4/25/2013
# Python Version: 2.7

# Begin code

a = 1
b = 2

c = a + b

print c
3
ustroetz

Mon avis

J'utilise ce format, comme j'apprends, "C'est plus pour ma propre santé mentale que pour une nécessité." 

Comme j'aime la cohérence. Alors, je commence mes fichiers comme ça.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# =============================================================================
# Created By  : Jeromie Kirchoff
# Created Date: Mon August 18 18:54:00 PDT 2018
# =============================================================================
"""The Module Has Been Build for..."""
# =============================================================================
# Imports
# =============================================================================
from ... import ...
<more code...>
  1. La première ligne est le Shebang
    1. Et je connais There's no reason for most Python files to have a Shebang line mais, pour moi, j’ai le sentiment que cela indique à l’utilisateur que j’ai écrit cela explicitement pour python3. Comme sur mon mac, j'ai à la fois python2 et python3.
  2. La ligne 2 est le codage, encore une fois pour clarification
    1. Comme certains d'entre nous l'oublient lorsqu'il s'agit de sources multiples (API, bases de données, courriels, etc.)
  3. La ligne 3 est davantage ma propre représentation visuelle du maximum de 80 caractères .
    1. Je sais "Oh, ah oui pourquoi?!?" encore une fois cela me permet de garder mon code dans les 80 caractères pour la représentation visuelle et la lisibilité.
  4. Les lignes 4 et 5 ne sont que ma façon de garder une trace de mon travail, car quand vous travaillez dans un grand groupe, il est utile de garder le texte écrit. C'est très utile et vous fait gagner un peu de temps à regarder dans votre GitHub. Non pertinent encore, juste des choses que j'ai ramassées pour ma santé mentale.
  5. La ligne 7 est votre Docstring requis en haut de chaque fichier python par Flake8 .

Encore une fois, c'est juste ma préférence. Dans un working environment, vous devez convaincre tout le monde de changer le comportement de facto. Je pourrais continuer encore et encore, mais nous le savons tous, du moins sur le lieu de travail.

Bloc d'en-tête

  • Qu'est-ce qu'un bloc d'en-tête? 
  • S'agit-il uniquement de commentaires en haut de votre code .__ ou est-ce quelque chose qui s'imprime lorsque le programme est exécuté? 
  • Ou autre chose?

Donc, dans ce contexte d'un cadre universitaire:

Bloc d'en-tête ou commentaires

Les commentaires d'en-tête apparaissent en haut du fichier. Ces lignes incluent généralement le nom de fichier, l'auteur, la date, le numéro de version et une description de l'utilisation du fichier et de son contenu. Pour les travaux en classe, les en-têtes doivent également inclure des éléments tels que le nom du cours, le numéro, la section, l’instructeur et le numéro du travail.

  • S'agit-il uniquement de commentaires en haut de votre code ou s'agit-il de quelque chose qui s'imprime lorsque le programme est exécuté? Ou autre chose?

Eh bien, cela peut être interprété différemment par votre professeur, présentez-le et demandez! 

"Si vous ne demandez jamais, la réponse est TOUJOURS NON."

c'est à dire: 

# Course: CS108
# Laboratory: A13
# Date: 2018/08/18
# Username: JayRizzo
# Name: Jeromie Kirchoff
# Description: My First Project Program.

Si vous recherchez Overkill:

ou à la manière python en utilisant "Noms de Dunder au niveau du module"

Noms de Dunder standard au niveau du module

__author__ = 'Jeromie Kirchoff'
__copyright__ = 'Copyright 2018, Your Project'
__credits__ = ['Jeromie Kirchoff', 'Victoria Mackie']
__license__ = 'MSU'  # Makin' Shi* Up!
__version__ = '1.0.1'
__maintainer__ = 'Jeromie Kirchoff'
__email__ = '[email protected]'
__status__ = 'Prototype'

Ajoutez vos propres noms personnalisés:

__course__ = 'cs108'
__teammates__ = ['Jeromie Kirchoff']
__laboratory__ = 'A13'
__date__ = '2018/08/18'
__user= 'JayRizzo'
__description__ = 'My First Project Program.'

Ensuite, ajoutez simplement un petit code à imprimer si l'instructeur le souhaite.

print('# ' + '=' * 78)
print('Author: ' + __author__)
print('Teammates: ' + ', '.join(__teammates__))
print('Copyright: ' + __copyright__)
print('Credits: ' + ', '.join(__credits__))
print('License: ' + __license__)
print('Version: ' + __version__)
print('Maintainer: ' + __maintainer__)
print('Email: ' + __email__)
print('Status: ' + __status__)
print('Course: ' + __course__)
print('Laboratory: ' + __laboratory__)
print('Date: ' + __date__)
print('Username: ' + __username__)
print('Description: ' + __description__)
print('# ' + '=' * 78)

Fin du résultat

Chaque fois que le programme est appelé, il affiche la liste.

$ python3 custom_header.py
# ==============================================================================
Author: Jeromie Kirchoff
Teammates: Jeromie Kirchoff
Copyright: Copyright 2018, Your Project
Credits: Jeromie Kirchoff, Victoria Mackie
License: MSU
Version: 1.0.1
Maintainer: Jeromie Kirchoff
Email: [email protected]
Status: Prototype
Course: CS108
Laboratory: A13
Date: 2018/08/18
Username: JayRizzo
Description: My First Project Program.
# ==============================================================================

Remarques: Si vous développez votre programme, définissez-le une seule fois dans le fichier init .py et vous devriez être prêt, mais vérifiez à nouveau auprès du professeur.

Si vous souhaitez que le script extrait mon github.

1
JayRizzo

Dans ce contexte, vous avez raison. Un bloc d'en-tête signifie un ensemble de commentaires en haut du fichier source contenant les informations demandées. Il n'a pas besoin de contenir de code qui fait quoi que ce soit.

0
recursive