web-dev-qa-db-ja.com

Python:ヘッダーとは何ですか?

私はPython=とプログラミング一般に不慣れです。大学でモジュールを取得していて、Pythonでかなり基本的なプログラムをいくつか作成する必要があります。ただし、最後の割り当てについてこのフィードバックを得ました。

ファイル名、作成者名、作成日、変更日、python versionを含むヘッダーブロックが必要です

ヘッダーブロックとは何ですか?それはあなたのコードの先頭にあるコメントだけですか、それともプログラムの実行時に出力されるものですか?または、他の何か?

14
Victoria Mackie

PythonのDocstring と呼ばれるものがあります(そして、python一般的なコード- PEP 8 )の記述方法に関するいくつかの規則は、三重単一引用符'''または三重二重引用符"""複数行コメントに最適:

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

後で(モジュールのプログラミング時に)情報を格納するための専用の特殊変数を使用することもできます。

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

詳細は answer here をご覧ください。

18
Vyktor

インストラクターは、課題のソースコードのトップセクションに次のような情報を追加することを望んでいるため、コメントを追加します。

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

ヘッダーブロックは、コードの上部にあるコメントです。プログラムの実行時に印刷されません。

例は次のようになります。

# 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

ここで非常に良い議論-> Python files?)の一般的なヘッダー形式は何ですか?

Python docstringは簡潔である必要があり、実際には変更履歴や、現在のバージョンの動作に直接関連しないものは含まれていません。 "man"スタイルのdocstringはまだ見ていません。上手。

ソースコントロールに依存しないリビジョン履歴を持つフラワーボックス(一部のリビジョンは最終的にソースコントロールがpre-dateになる可能性があるため)は、紙でコードを読んだ日や、メール送信。いつものようにつながっているとは限りませんでした。

現代のIDEを使用すると、これは好意から外れましたが、古い/大きい高レベルの作品で見ることができます。一部のショップでは、特にコードが一部のサインインは、怠惰でだらしない方法でコメントされています。

したがって、それは異なりますが、:

#! /usr/bin/python
#--------------------------------#
# optional flower box  
#--------------------------------#
""" 
Multiple lines of doc if required
"""

import foo
import bar

__metastuff__ = 'some value'

meta」が高く、特に「pycharm」のyoutubeプロモーションに表示されます。それは実際にはコードであり、インポートはコードの前に来ることが期待されているため、人々はインポートの下にそれを見るのが好きです。夢中になってしまいそうな気がします。低レベルのコードでの賢明で有益なコメントは、とにかく上に書かれているものよりもはるかに価値があります。

現実の世界では、プロジェクトで他の人がしていることを実行するだけで大​​丈夫です。とにかく、テンプレートを再利用するか、「プロトタイプ」からコピーして貼り付けます(つまり、ripoff)。

3
mckenzm

私の意見

私はこの形式を使用しています。私は学んでいるので、「これは必要以上に自分の正気のためです。」

一貫性が好きなので。だから、私は私のようにファイルを開始します。

#!/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. 最初の行はシバンです
    1. そして、私は知っています There's no reason for most Python files to have a Shebang lineですが、私にとっては、これをpython3用に明示的に記述したことをユーザーに知らせていると感じています。私のMacと同じように、私はpython2とpython3の両方を持っています。
  2. 行2はエンコーディングですが、ここでもわかりやすくします
    1. 複数のソース(API、データベース、電子メールなど)を処理しているときに忘れてしまう人もいます。
  3. 3行目は、私自身の最大80文字の視覚表現です。
    1. 私は「ああ、うわあ、なぜ?!?」繰り返しになりますが、これにより、コードを80文字以内に抑えて視覚的な表現と読みやすさを実現しています。
  4. 4行目と5行目は、それを書いてくれた大規模なグループで作業するときに役立つので、GitHubを見る時間を少し節約できるので、私の独自の追跡方法です。私の正気のために私が拾ったものだけでは再び関係ありません。
  5. 7行目は、各python file per Flake8 )の上部に必要なDocstringです。

繰り返しますが、これは私の好みです。 working environment事実上の行動を変えるには、全員を勝ち取らなければなりません。私はこれについて何度も続けることができましたが、私たちは皆、少なくとも職場でそれについて知っています。

ヘッダーブロック

  • ヘッダーブロックとは何ですか?
  • それはあなたのコードの先頭にあるコメントだけですか、それともプログラムの実行時に出力されるものですか?
  • または、他の何か?

したがって、大学の設定のこのコンテキストでは:

ヘッダーブロックまたはコメント

ヘッダーコメントはファイルの上部に表示されます。これらの行には通常、ファイル名、作成者、日付、バージョン番号、およびファイルの目的とその内容の説明が含まれます。クラスの割り当ての場合、ヘッダーにはコース名、番号、セクション、インストラクター、割り当て番号なども含める必要があります。

  • それはあなたのコードの先頭にあるコメントだけですか、それともプログラムの実行時に出力されるものですか?または、他の何か?

まあ、これはあなたの教授によって異なって解釈され、それを紹介し、尋ねることができます!

「あなたが決して尋ねないならば、答えは常にいいえです。」

つまり:

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

あなたがOverkillを探しているなら:

またはpython使用方法 "Module Level Dunder Names"

標準モジュールレベルのDunder名

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

独自のカスタム名を追加します。

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

次に、インストラクターが希望する場合は、印刷する小さなコードを追加します。

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)

最終結果

プログラムが呼び出されるたびに、リストが表示されます。

$ 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.
# ==============================================================================

注:プログラムを拡張する場合は、これをinit。pyに1回設定するだけで、すべてが設定されているはずですが、再度教授に確認してください。

スクリプトが私のgithubをチェックアウトしたい場合

2
JayRizzo

この文脈では、あなたは正しいです。ヘッダーブロックは、要求された情報を含むソースファイルの上部にあるコメントのセットを意味します。何かを実行するコードを含める必要はありません。

0
recursive