好的,我知道三引号字符串可以作为多行注释 . 例如,
"""Hello, I am a multiline comment"""
和
'''Hello, I am a multiline comment'''
但从技术上讲这些都是字符串,对吗?
我用谷歌搜索并阅读了Python风格指南,但我无法找到技术答案,为什么没有正式实现多行,/ * * /类型的评论 . 我使用三引号没有问题,但我对导致这个设计决定的原因有点好奇 .
# This # is # a # multi-line # comment
在编辑器中使用注释块或搜索并替换(s / ^ /#/ g)来实现此目的 .
来自The Zen of Python:
应该有一个 - 最好只有一个 - 明显的方法来做到这一点 .
要在Pycharm IDE中注释掉一段代码:
代码|评论线评论
Windows或Linux:Ctrl /
Mac OS:Command /
我通过下载我的文本编辑器(TextPad)的宏来解决这个问题,它允许我突出显示行,然后在每行的第一行插入# . 一个类似的宏删除# . 有些人可能会问为什么多行是必要的,但是当你试图“关闭”一段代码用于调试时,它会派上用场 .
因为#约定是常见的,并且确实没有带有#-sign注释的't anything you can do with a multiline comment that you can't . 这是一次历史性的事故,就像回到PL / I的评论一样,
假设他们被认为是不必要的 . 由于只需键入 #a comment 就很容易,因此多行注释可以包含许多单行注释 .
#a comment
另一方面,对于HTML,更难以输入 <!--comments like this--> .
<!--comments like this-->
就个人而言,我的评论风格就像Java一样
/* * My multi-line comment in Java */
因此,如果您的风格是前面示例的典型风格,那么仅使用单行注释并不是一件坏事,因为相比之下您会有
# # My multi-line comment in Python #
VB.NET也是一种只用单行注释的语言,我个人觉得它很烦人,因为评论最终看起来不那么喜欢评论,更像是某种引用
' ' This is a VB.NET example '
单行注释最终比多行注释具有更少的字符用法,并且不太可能被正则表达式语句中的某些狡猾字符转义?我倾向于同意内德的观点 .
我怀疑你会得到一个更好的答案,“Guido不觉得需要多行评论” .
Guido有tweeted关于这个:
Python技巧:您可以使用多行字符串作为多行注释 . 除非用作文档字符串,否则它们不会生成代码! :-)
多行注释很容易破解 . 如果您在简单的计算器程序中有以下内容怎么办?
operation = '' print("Pick an operation: +-*/") # Get user input here
尝试使用多行注释对此进行评论:
/* operation = '' print("Pick an operation: +-*/") # Get user input here */
糟糕,您的字符串包含结束注释分隔符 .
三重引用的文本不应被视为多行注释;按惯例,它们是docstrings . 它们应该描述代码的作用以及如何使用它,但不能描述注释掉代码块之类的内容 .
根据Guido,multiline comments in Python are just contiguous single-line comments(搜索"block comments") .
要注释代码块,我有时会使用以下模式:
if False: # A bunch of code
这可能追溯到核心概念,即应该有一种明显的方法来完成任务 . 其他评论样式会增加不必要的复杂性并可能降低可读性
好吧,三引号用作文档字符串中的多行注释 . #comments用作内联注释,人们可以使用它 .
大多数脚本语言也没有多行注释 . 也许这就是原因?
见PEP 0008,评论部分
并查看您的Python编辑器是否为块注释提供了一些键盘快捷键 . Emacs支持它,以及Eclipse,大概是大多数体面的IDE都支持它 .
这只是猜测..但是
因为它们是字符串,所以它们具有一些语义值(编译器不会删除它们),因此将它们用作文档字符串是有意义的 . 它们实际上成为AST的一部分,因此提取文档变得更容易 .
此外,multiline comments are a bitch . 很抱歉,但不管语言如何,除了调试之外,我不会将它们用于其他任何事情 . 假设你有这样的代码:
void someFunction() { Something /*Some comments*/ Something else }
然后你会发现你的代码中有些东西无法用调试器修复,所以你可以通过用theese多行注释注释掉越来越小的代码块来手动调试它 . 这样就可以了功能:
void someFunction() { /* Something /* Comments */ Something more*/ }
这真的很烦人 .
使用 IDLE 的多行注释:
Mac OS X ,在选择代码后,使用Ctrl 3注释代码块并使用Ctrl 4取消注释 .
Windows ,在选择代码后,使用Ctrl Alt 3注释代码块,并使用Ctrl At 4取消注释 .
我记得读到一个将他的多行注释放入三引号变量的人:
x = ''' This is my super-long mega-comment. Wow there are a lot of lines going on here! '''
这确实占用了一些内存,但它为您提供了多行注释功能,而且大多数编辑器都会为您突出显示语法:)
通过简单地包装代码也很容易注释掉代码
x = '''
'''
16 回答
在编辑器中使用注释块或搜索并替换(s / ^ /#/ g)来实现此目的 .
来自The Zen of Python:
应该有一个 - 最好只有一个 - 明显的方法来做到这一点 .
要在Pycharm IDE中注释掉一段代码:
代码|评论线评论
Windows或Linux:Ctrl /
Mac OS:Command /
我通过下载我的文本编辑器(TextPad)的宏来解决这个问题,它允许我突出显示行,然后在每行的第一行插入# . 一个类似的宏删除# . 有些人可能会问为什么多行是必要的,但是当你试图“关闭”一段代码用于调试时,它会派上用场 .
因为#约定是常见的,并且确实没有带有#-sign注释的't anything you can do with a multiline comment that you can't . 这是一次历史性的事故,就像回到PL / I的评论一样,
假设他们被认为是不必要的 . 由于只需键入
#a comment
就很容易,因此多行注释可以包含许多单行注释 .另一方面,对于HTML,更难以输入
<!--comments like this-->
.就个人而言,我的评论风格就像Java一样
因此,如果您的风格是前面示例的典型风格,那么仅使用单行注释并不是一件坏事,因为相比之下您会有
VB.NET也是一种只用单行注释的语言,我个人觉得它很烦人,因为评论最终看起来不那么喜欢评论,更像是某种引用
单行注释最终比多行注释具有更少的字符用法,并且不太可能被正则表达式语句中的某些狡猾字符转义?我倾向于同意内德的观点 .
我怀疑你会得到一个更好的答案,“Guido不觉得需要多行评论” .
Guido有tweeted关于这个:
多行注释很容易破解 . 如果您在简单的计算器程序中有以下内容怎么办?
尝试使用多行注释对此进行评论:
糟糕,您的字符串包含结束注释分隔符 .
三重引用的文本不应被视为多行注释;按惯例,它们是docstrings . 它们应该描述代码的作用以及如何使用它,但不能描述注释掉代码块之类的内容 .
根据Guido,multiline comments in Python are just contiguous single-line comments(搜索"block comments") .
要注释代码块,我有时会使用以下模式:
这可能追溯到核心概念,即应该有一种明显的方法来完成任务 . 其他评论样式会增加不必要的复杂性并可能降低可读性
好吧,三引号用作文档字符串中的多行注释 . #comments用作内联注释,人们可以使用它 .
大多数脚本语言也没有多行注释 . 也许这就是原因?
见PEP 0008,评论部分
并查看您的Python编辑器是否为块注释提供了一些键盘快捷键 . Emacs支持它,以及Eclipse,大概是大多数体面的IDE都支持它 .
这只是猜测..但是
因为它们是字符串,所以它们具有一些语义值(编译器不会删除它们),因此将它们用作文档字符串是有意义的 . 它们实际上成为AST的一部分,因此提取文档变得更容易 .
此外,multiline comments are a bitch . 很抱歉,但不管语言如何,除了调试之外,我不会将它们用于其他任何事情 . 假设你有这样的代码:
然后你会发现你的代码中有些东西无法用调试器修复,所以你可以通过用theese多行注释注释掉越来越小的代码块来手动调试它 . 这样就可以了功能:
这真的很烦人 .
使用 IDLE 的多行注释:
Mac OS X ,在选择代码后,使用Ctrl 3注释代码块并使用Ctrl 4取消注释 .
Windows ,在选择代码后,使用Ctrl Alt 3注释代码块,并使用Ctrl At 4取消注释 .
我记得读到一个将他的多行注释放入三引号变量的人:
这确实占用了一些内存,但它为您提供了多行注释功能,而且大多数编辑器都会为您突出显示语法:)
通过简单地包装代码也很容易注释掉代码
和