好的,我知道三引号字符串可以用作多行注释。比如说:
"""Hello, I am a
multiline comment"""
和
'''Hello, I am a
multiline comment'''
但从技术上讲,这些是字符串,对吗?
我已经通过谷歌和阅读Python风格指南来查找答案,但我无法找到关于为什么没有正式实现多行/* */类型注释的技术性答案。我使用三重引号没有问题,但我有点好奇是什么导致了这个设计决定。
我觉得你可能不会得到比“Guido没有感觉需要多行注释”更好的答案。
Guido已经发布推文:
Python小贴士:您可以将多行字符串用作多行注释。除非用作文档字符串,否则它们不会生成任何代码!:-)
if False
更好。虽然它可以达到完全相同的效果,但不够清晰(因为一眼看上去并不容易发现这个代码块已被禁用)。 注:原文中有专业术语"commented-out code"指被注释掉的代码。 - user1919238多行注释很容易被打破。如果你在一个简单的计算器程序中有以下内容怎么办?
operation = ''
print("Pick an operation: +-*/")
# Get user input here
/*
operation = ''
print("Pick an operation: +-*/")
# Get user input here
*/
抱歉,您的字符串包含了结束注释分隔符。
#:
开始一个注释块,并使用缩进来显示注释何时结束。这种方法清晰、一致,并且完美地处理了嵌套。 - GatesDA三重引号的文本不应被视为多行注释,按照惯例它们是文档字符串。它们应该描述你的代码做什么以及如何使用它,但不适用于像注释掉代码块这样的事情。
根据Guido的说法,Python中的多行注释只是连续的单行注释(搜索“块注释”)。
要注释代码块,我有时会使用以下模式:
if False:
# A bunch of code
V}>>
实现。 - Kenan Banks这可能与核心概念有关,即执行任务应该有一种明显的方法。添加额外的注释样式会增加不必要的复杂性,降低可读性。
#
。 - GatesDA嗯,三重引号在文档字符串中用作多行注释。#注释用作内联注释,并且人们习惯使用它。
大多数脚本语言也没有多行注释。也许这就是原因所在?
请参见PEP 0008,第评论节。
同时,请查看您的Python编辑器是否提供块注释的键盘快捷方式。Emacs支持它,以及Eclipse,可能大部分好的IDE也支持。
来自Python之禅:
应该有一种——最好只有一种——明显的方法来做它。
在 Pycharm IDE 中注释掉一段代码的方法:
就我个人而言,在Java中我的注释风格通常是这样的:
/*
* My multi-line comment in Java
*/
如果您的编码风格与前面的示例相似,那么仅有单行注释并不是一个坏事,因为相比之下您会有更少的
#
# My multi-line comment in Python
#
VB.NET也是一种只有单行注释的语言,个人认为这很烦人,因为注释看起来更像引用,而不是注释。
'
' This is a VB.NET example
'
单行注释在字符使用方面比多行注释更少,并且不太可能被一些有问题的字符在正则表达式语句中转义。不过我倾向于同意Ned的看法。
对于其他想要在Python中使用多行注释的人们——使用三引号格式可能会带来一些问题,就像我刚刚以艰难的方式学到的那样。请考虑以下代码:
this_dict = {
'name': 'Bob',
"""
This is a multiline comment in the middle of a dictionary
"""
'species': 'Cat'
}
我通过下载文本编辑器(TextPad)的宏来解决这个问题,该宏可以让我突出显示行,然后在每行的开头插入#。类似的宏可以删除#。有些人可能会问为什么需要多行,但当您尝试为调试目的“关闭”代码块时,它非常方便。
if False:
。 - AturSams