为什么我的python程序编译器没有行代号_为什么Python没有多行注释?

为什么Python没有多行注释?

好的,我知道三引号字符串可以作为多行注释。 例如,

"""Hello, I am a

multiline comment"""

'''Hello, I am a

multiline comment'''

但从技术上讲这些都是字符串,对吗?

我用谷歌搜索并阅读了Python风格指南,但我无法找到技术答案,为什么没有正式实现多行,/ * * /类型的评论。 我使用三引号没有问题,但我对导致这个设计决定的原因有点好奇。

16个解决方案

245 votes

我怀疑你会得到一个更好的答案,“Guido不觉得需要多行评论”。

Guido发布了关于此的推文:

Python技巧:您可以使用多行字符串作为多行注释。 除非用作文档字符串,否则它们不会生成代码!:-)

Ned Batchelder answered 2019-02-20T12:44:20Z

57 votes

多行注释很容易破解。 如果您在简单的计算器程序中有以下内容怎么办?

operation = ''

print("Pick an operation: +-*/")

# Get user input here

尝试使用多行注释对此进行评论:

/*

operation = ''

print("Pick an operation: +-*/")

# Get user input here

*/

糟糕,您的字符串包含结束注释分隔符。

Steve Losh answered 2019-02-20T12:45:07Z

33 votes

三重引用的文本不应被视为多行注释; 按照惯例,它们是文档字符串。 它们应该描述代码的作用以及如何使用它,但不能描述注释掉代码块之类的内容。

根据Guido的说法,Python中的多行注释只是连续的单行注释(搜索“块注释”)。

要注释代码块,我有时会使用以下模式:

if False:

# A bunch of code

Triptych answered 2019-02-20T12:45:57Z

28 votes

这可能追溯到核心概念,即应该有一种明显的方法来完成任务。 其他评论样式会增加不必要的复杂性并可能降低可读性

Jarred McCaffrey answered 2019-02-20T12:46:25Z

11 votes

好吧,三引号用作文档字符串中的多行注释。 #comments用作内联注释,人们可以使用它。

大多数脚本语言也没有多行注释。 也许这就是原因?

参见PEP 0008,评论部分

并查看您的Python编辑器是否为块注释提供了一些键盘快捷键。 Emacs支持它,以及Eclipse,大概是大多数体面的IDE都支持它。

Abgan answered 2019-02-20T12:48:34Z

7 votes

来自Python的禅宗:

应该有一个 - 最好只有一个 - 明显的方法来做到这一点。

Jeremy Cantrell answered 2019-02-20T12:49:04Z

4 votes

就个人而言,我的评论风格就像Java一样

/*

* My multi-line comment in Java

*/

因此,如果您的风格是前面示例的典型风格,那么仅使用单行注释并不是一件坏事,因为相比之下您会有

#

# My multi-line comment in Python

#

VB.NET也是一种只用单行注释的语言,我个人觉得它很烦人,因为评论最终看起来不那么喜欢评论,更像是某种引用

'

' This is a VB.NET example

'

单行注释最终比多行注释具有更少的字符用法,并且不太可能被正则表达式语句中的某些狡猾字符转义? 我倾向于同意内德的观点。

Kezzer answered 2019-02-20T12:49:51Z

3 votes

# This

# is

# a

# multi-line

# comment

在编辑器中使用注释块或搜索并替换(s / ^ /#/ g)来实现此目的。

recursive answered 2019-02-20T12:50:12Z

3 votes

要在Pycharm IDE中注释掉一段代码:

代码| 评论线评论

Windows或Linux:Ctrl + /

Mac OS:Command + /

Craig S. Anderson answered 2019-02-20T12:50:49Z

2 votes

我通过下载我的文本编辑器(TextPad)的宏来解决这个问题,它允许我突出显示行,然后在每行的第一行插入#。 一个类似的宏删除#。 有些人可能会问为什么多行是必要的,但是当你试图“关闭”一段代码用于调试时,它会派上用场。

kati answered 2019-02-20T12:51:13Z

0 votes

因为#约定是常见的,并且实际上没有任何东西可以用多行注释来做,你不能使用#-sign注释。 这是一次历史性的事故,就像回到PL / I的/* ... */评论的血统一样,

Charlie Martin answered 2019-02-20T12:51:45Z

0 votes

假设他们被认为是不必要的。 由于输入#a comment非常容易,因此多行注释可以包含许多单行注释。

另一方面,对于HTML,需要多线程。 输入更难。

stalepretzel answered 2019-02-20T12:52:40Z

0 votes

这只是猜测..但是

因为它们是字符串,所以它们具有一些语义值(编译器不会删除它们),因此将它们用作文档字符串是有意义的。 它们实际上成为AST的一部分,因此提取文档变得更容易。

hasen answered 2019-02-20T12:53:14Z

0 votes

此外,多行评论是一个婊子。 很抱歉,但不管语言如何,除了调试之外,我不会将它们用于其他任何事情。 假设你有这样的代码:

void someFunction()

{

Something

/*Some comments*/

Something else

}

然后你会发现你的代码中有些东西无法用调试器修复,所以你可以通过用theese多行注释注释掉越来越小的代码块来手动调试它。 这将给出功能:

void someFunction()

{ /*

Something

/* Comments */

Something more*/

}

这真的很烦人。

martiert answered 2019-02-20T12:54:22Z

0 votes

使用IDLE的多行注释:

选择代码后,Mac OS X使用Ctrl + 3注释一段代码,并使用Ctrl + 4取消注释。

Windows,代码选择后,使用Ctrl + Alt + 3注释一段代码,然后使用Ctrl + At + 4取消注释。

Jorgesys answered 2019-02-20T12:55:12Z

-1 votes

我记得读到一个将他的多行注释放入三引号变量的人:

x = '''

This is my

super-long mega-comment.

Wow there are a lot of lines

going on here!

'''

这确实占用了一些内存,但它为您提供了多行注释功能,而且大多数编辑器都会为您突出显示语法:)

通过简单地包装代码也很容易注释掉代码

x = '''

'''

turvyc answered 2019-02-20T12:56:26Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值