19

我是 Python 和一般编程的新手。我正在大学学习一个模块,该模块需要我用 Python 编写一些相当基本的程序。但是,我在上次作业中收到了以下反馈:

应该有一个包含文件名、作者姓名、创建日期、修改日期和 python 版本的标题块

什么是标题块?它只是代码顶部的注释,还是程序运行时打印的内容?或者是其他东西?

4

6 回答 6

25

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__ = "rob@spot.colorado.edu"
__status__ = "Production"

更多细节在这里回答

于 2013-04-25T17:36:04.603 回答
6

我的意见

我使用这种格式,因为我正在学习,“这更多是为了我自己的理智,而不是必需品。”

因为我喜欢一致性。所以,我像这样开始我的文件。

#!/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. 第一行是Shebang
    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 行是每个 Flake8 的每个 python 文件顶部所需的Docstring

同样,这只是我的偏好。在一个working environment你必须赢得所有人的支持才能改变事实上的行为。我可以继续说下去,但我们都知道,至少在工作场所是这样。

标题块

  • 什么是标题块?
  • 它只是代码顶部的注释,还是程序运行时打印的内容?
  • 或者是其他东西?

因此,在大学环境中:

标题块或注释

标题注释出现在文件的顶部。这些行通常包括文件名、作者、日期、版本号以及文件用途和内容的描述。对于课堂作业,标题还应包括课程名称、编号、部分、讲师和作业编号等内容。

  • 它只是代码顶部的注释,还是程序运行时打印的内容?或者是其他东西?

好吧,您的教授可以对此有不同的解释,展示它并询问!

“如果你从不问,答案总是不。”

IE:

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

如果您正在寻找 Overkill:

或使用“Module Level Dunder Names”的python方式

标准模块级别 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__ = 'Jahomie04@gmail.com'
__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: Jahomie04@gmail.com
Status: Prototype
Course: CS108
Laboratory: A13
Date: 2018/08/18
Username: JayRizzo
Description: My First Project Program.
# ==============================================================================

注意:如果你扩展你的程序,只需在init .py 中设置一次,你应该已经设置好了,但再次与教授核实。

如果想要脚本签出我的 github。

于 2018-08-19T05:36:30.770 回答
4

这里讨论得很好 --> Python 文件常见的头格式是什么?

Python 文档字符串应该简洁,并且不真正包含修订历史记录,或者与当前版本行为不直接相关的任何内容。我还没有看到“男人”风格的文档字符串,它可能也一样。

花盒,具有独立于源代码控制的修订历史(因为某些修订最终可能早于您的源代码控制)可以追溯到阅读纸上代码或通过电子邮件发送的时代。我们并不总是像现在这样联系在一起。

使用现代 IDE,这已经失宠,但可以在较旧/较大的高级作品中看到。在某些商店中,登录不是由编码人员执行的,尤其是在代码已“被淘汰”的情况下。一些登录的评论以一种懒散、邋遢的方式。

所以它会有所不同,但是:

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

import foo
import bar

__metastuff__ = 'some value'

我看到“”更高,特别是在“pycharm”的 youtube 宣传中。人们喜欢在导入下面看到它,因为它实际上是代码,并且导入应该在代码之前。我可以想象它可能会变得很容易被带走。无论如何,低级代码中的明智和信息丰富的注释比楼上写的更有价值。

在现实世界中,只要做其他人在你的项目上所做的事情,你就会没事的。无论如何,重复使用模板或从“原型”复制和粘贴(即盗版)是很常见的。

于 2014-12-13T19:44:33.387 回答
4

您的讲师希望您在作业的源代码顶部添加一些信息,如下所示,所以您是对的,您将添加评论:

####################################
# File name: ...                   #
# Author: ...                      #
# Submission:                      #
# Instructor:                      #
####################################
于 2013-04-25T17:24:18.300 回答
3

标题块只是代码顶部的注释。程序运行时不打印。

一个示例可能如下所示:

# 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
于 2013-04-25T17:27:32.713 回答
0

在这种情况下,你是对的。标头块是指源文件顶部的一组注释,其中包含所请求的信息。它不需要包含任何执行任何操作的代码。

于 2013-04-25T17:20:26.610 回答