关于python:Python-为什么用-号作注释符

8次阅读

共计 1907 个字符,预计需要花费 5 分钟才能阅读完成。

对于编程语言中的正文,其重要性基本上已为大家所共识。

然而对于正文的标准,这个话题就像咱们之前聊过的缩进、终止符和命名形式一样,众口难调。

正文符通常可分为两种,即行正文与块正文(inline/block),它们在不同的编程语言中的符号堪称让人目迷五色。

比方行正文符,它至多有以下的 17 种之多(出自维基百科 )):

其中两个最大的营垒别离是“//”与“#”号:

  • // 正文符:ActionScript, C (C99), C++, C#, D, F#, Go, Java, JavaScript, Kotlin, Object Pascal (Delphi), Objective-C, PHP, Rust, Scala, SASS, Swift, Xojo
  • # 正文符:Bourne shell and other UNIX shells, Cobra, Perl, Python, Ruby, Seed7, Windows PowerShell, PHP, R, Make, Maple, Elixir, Nim

那么,Python 为什么用“#”号作正文符,而不是“//”呢?

这个问题恐怕没方法从解析的效率、符号的辨识度和输出的便利性等方面答复,因为它们基本上没有区别。

我没有找到官网的解释,然而从这些正文符的营垒中,曾经不难得出一个较为正当的解释:

  • // 正文符基本上被 C 语言家族所用
  • # 正文符则基本上是被 Shell 和其它脚本语言所用

Python 在发明之初,从 C 和 Shell 语言中借鉴了不少货色,但它是一种脚本语言,因而在正文符这个最为根底的语言因素上,就偏差了脚本语言的传统。

在某些“类脚本语言”中,比方 yaml、conf 和 ini 等格局的配置文件,它们大多也是采纳脚本语言的“#”号作为正文符。

所以,Python 行内正文符的抉择,大略能够归结为一种历史起因,即借鉴了 Shell 脚本语言的写法。

相比于行正文符的多样,块正文符更加是让人目迷五色:

大多数写法是我从未见过的,有些甚至是难以忍受的,槽点太多!

在这份表格里,咱们看不到 Python,因为从严格意义上讲,Python 并没有块正文符!

一般而言,咱们在间断的每行内容后面加“#”号,达到块正文的成果。块正文被看作是多个行正文。

PEP-8 中是这么倡议的:

Each line of a block comment starts with a # and a single space (unless it is indented text inside the comment).

有人曾在 Twitter 上提问,为什么 Python 没有块正文符?

Guido 回复称,能够将多行字符串用作块正文:

Python 的多行字符串用三对单引号或双引号示意,它还能够用作文档字符串(即 Documentation Strings,简写 docstrings)。

然而,将它当做多行正文符应用,在语义上则有点怪怪的——它示意的是一段字符串,尽管没有赋值给变量,不会生成代码,然而它并非语义上的正文。

因为脚本语言的个性,它容许咱们写一段“无根的字符串”,在语法上没有问题,也没有负作用(negative effects),然而,如果把它作为正文应用,这就是一种副作用(side effects)了。

从这点上思考,我尽管不拥护有人把多行字符串写法用作块正文,然而我会更举荐大家应用“#”号作正文。

另外,对于无用的代码,最好的做法就是间接删除,如果后续发现有须要,再回退批改。具体的多行正文尽量放在文档字符串中,这样在外围代码中就会很少呈现多行正文的状况了。

对于 Python 的正文符用法,大家是怎么想的呢?欢送留言交换。

如果你感觉本文剖析得不错,那你应该会喜爱这些文章:

1、Python 为什么应用缩进来划分代码块?

2、Python 的缩进是不是反人类的设计?

3、Python 为什么不必分号作语句终止符?

4、Python 为什么没有 main 函数?为什么我不举荐写 main 函数?

5、Python 为什么举荐蛇形命名法?

6、Python 为什么不反对 i++ 自增语法,不提供 ++ 操作符?

7、Python 为什么只需一条语句“a,b=b,a”,就能间接替换两个变量?

写在最初:本文属于“Python 为什么”系列(Python 猫出品),该系列次要关注 Python 的语法、设计和倒退等话题,以一个个“为什么”式的问题为切入点,试着展示 Python 的迷人魅力。若你有其它感兴趣的话题,欢送填在《Python 的十万个为什么?》里的考察问卷中。局部话题会推出视频版,请在 B 站收看,观看地址:视频地址

公众号【Python 猫 】,本号连载优质的系列文章,有 Python 为什么系列、喵星哲学猫系列、Python 进阶系列、好书举荐系列、技术写作、优质英文举荐与翻译等等,欢送关注哦。

正文完
 0