Python中注释函数的正确方法是什么?
在Python中是否有一种公认的注释函数的方法?以下情况是否可以接受Python中注释函数的正确方法是什么?,python,Python,在Python中是否有一种公认的注释函数的方法?以下情况是否可以接受 ######################################################### # Create a new user ######################################################### def add(self): 阅读有关在Python代码中使用的内容 根据Python文档字符串约定: 函数或方法的docstring应该总结其行为,并记录
#########################################################
# Create a new user
#########################################################
def add(self):
阅读有关在Python代码中使用的内容
根据Python文档字符串约定:
函数或方法的docstring应该总结其行为,并记录其参数、返回值、副作用、引发的异常以及何时可以调用它的限制(如果适用的话)。应指明可选参数。应该记录关键字参数是否是接口的一部分
这里没有黄金法则,而是提供对团队中的其他开发人员(如果您有)或甚至对您自己有意义的注释,当您在六个月后再次使用它时。正确的方法是提供一个文档字符串。这样,
help(add)
也会给出您的评论
def add(self):
"""Create a new user.
Line 2 of comment...
And so on...
"""
这是三个双引号来打开评论,另外三个双引号来结束它。您还可以使用任何有效的Python字符串。它不需要是多行的,双引号可以用单引号代替
请参阅:我会选择与文档工具集成的文档实践,如 第一步是使用
docstring
:
def add(self):
""" Method which adds stuff
"""
使用:
作为模块、函数、类或方法定义中的第一条语句出现的字符串文字。这样的docstring成为该对象的\uuuu doc\uuuu
特殊属性
所有模块通常都应该有docstring,模块导出的所有函数和类也应该有docstring。公共方法(包括\uuu init\uu
构造函数)也应该有docstring。包可以记录在包目录中\uuuuu init\uuuuuuupy
文件的模块docstring中
Python代码中其他地方出现的字符串文字也可以用作文档。Python字节码编译器无法识别它们,并且无法作为运行时对象属性访问它们(即未分配给\uuuu doc\uuu
),但软件工具可以提取两种类型的额外docstring:
\uuuu init\uuuu
方法的顶层简单赋值之后立即出现的字符串文本称为“属性docstrings”正如其他人已经编写的那样,使用docstring
您甚至可以更进一步,在docstring中添加一个,使功能的自动测试变得简单。好的评论原则是相当主观的,但这里有一些指导原则:
- 函数注释应描述函数的意图,而不是实现
- 概述您的函数对系统状态所做的任何假设。如果它使用任何全局变量(tsk,tsk),请列出这些变量
- 小心过度使用。拥有长长的哈希字符串似乎可以使注释更容易阅读,但当注释发生变化时,处理它们可能会很烦人
- 利用提供“自动文档”的语言特性,即Python中的docstring、Perl中的POD和Java中的Javadoc
def test_function(p1, p2, p3):
"""
test_function does blah blah blah.
:param p1: describe about parameter p1
:param p2: describe about parameter p2
:param p3: describe about parameter p3
:return: describe what it returns
"""
pass
你可以用三个引号来做这件事 您可以使用单引号:
def myfunction(para1,para2):
'''
The stuff inside the function
'''
def myfunction(para1,para2):
"""
The stuff inside the function
"""
或双引号:
def myfunction(para1,para2):
'''
The stuff inside the function
'''
def myfunction(para1,para2):
"""
The stuff inside the function
"""
注意,它不必是三重引用的;任何字符串文字都可以。但你们可以把更多的信息放在一个多行字符串中,尽管按照惯例,它应该是三重引号。我从来没有见过一个不是的文档串,这并不是说我不同意。它们应该是三重引号,但在野外你会看到一些不是。你也可以用三个单引号(而不是三个双引号)来打开和关闭docstring。你不也应该缩进注释吗?这没有什么主观的,Python非常清楚如何使用docstring注释。@fuzzy lollipop,我很感谢你的评论,但你会注意到我的最后一点正好说明了这一点。也许OP的问题只是关于Python注释的机制,但我认为我的答案不值得往下说。如果没有链接页面,这个答案很弱。这不应该缩进(在带有
def
的行之后)吗?(不是反问。)我喜欢这种风格,但当我把鼠标悬停在我的函数上时,我得到的只是args->它没有显示任何描述性信息,没有任何想法?@RicardoSanchez你从哪个IDE获得这种风格?VS代码通常在鼠标悬停后显示所有内容,而Pycharm在鼠标悬停时不会显示任何内容。@ShwetabhShekhar我刚刚再次检查,它在VS代码上确实有效,一定是在更新之后,谢谢。